Allmänna anvisningar: Skriv dina svar på svarsblanketten. Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Relevanta dokument
Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student)

Programmering och Programspråk. 7,5 högskolepoäng. Namn: (Ifylles av student) Personnummer: (Ifylles av student)

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Tentamen Grundläggande programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

DD1361 Programmeringsparadigm. Carina Edlund

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Tentamen i Introduktion till programmering

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Lösningar till tentamen i EIT070 Datorteknik

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Digital- och datorteknik

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Introduktion till programmering och Python Grundkurs i programmering med Python

Klassdeklaration. Metoddeklaration. Parameteröverföring

Introduktion till Haskell

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 2. Operativsystem och programmering

TDIU01 - Programmering i C++, grundkurs

Imperativ programmering. Föreläsning 2

TENTAMEN OOP

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen PC-teknik 5 p Lösningar och kommentarer

SMD 134 Objektorienterad programmering

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Lösningar till tentamen i EIT070 Datorteknik

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Sista delen av kursen

Programspråkslingvistik. Sista delen av kursen. Ett programspråk

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 6: Introduktion av listor

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Digital- och datorteknik

Tentamen. Datorteknik Y, TSEA28

Program & programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Programkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2010/11 moment 9 Sida 1 Uppdaterad

Sista delen av kursen

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Visual Basic, en snabbgenomgång

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Lösningar till tentamen i EIT070 Datorteknik

Tentamen OOP

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Digital- och datorteknik

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen i. TDDA 69 Data och programstrukturer

Programmeringsteknik med C och Matlab

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för:

Programmering A. Johan Eliasson

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

LÖSNINGSFÖRSLAG TENTAMEN PROGRAMMERING I ETT FUNKTIONELLT SPRÅK ML, 5P

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 3: Booleans, if, switch

729G04 Programmering och diskret matematik

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Datorarkitekturer med operativsystem ERIK LARSSON

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

DAT043 Objektorienterad Programmering

Tentamen PC-teknik 5 p

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

Styrenheten styrsignalsekvenser programflödeskontroll

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Del : Funktionell programmering. I alla deluppgifterna, använd Haskell och skriv typen för de identifierare du definierar.

OOP Objekt-orienterad programmering

Föreläsning 1 & 2 INTRODUKTION

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

TDIU01 - Programmering i C++, grundkurs

Grundläggande datalogi - Övning 1

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

F4: Assemblerprogrammering

729G04 Programmering och diskret matematik

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Repetition C-programmering

Programexempel för FLEX

Assemblerprogrammering del 3

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Transkript:

Programmering och Programspråk Provmoment: Ladokkod: Tentamen ges för: Tentamen NPL011 Systemarkitektprogrammet 7,5 högskolepoäng Anonym student-id: Tentamensdatum: 2015-11-03 Tid: 09.00 13.00 Hjälpmedel: Inga hjälpmedel Totalt antal poäng på tentamen: För att få respektive betyg krävs: G=22 VG=33 40 poäng Allmänna anvisningar: Skriv dina svar på svarsblanketten. Markera och ange alla svar tydligt och entydigt efter instruktionerna. Rättningstiden är som längst tre veckor Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! Ansvarig lärare: Håkan Sundell (Gideon Mbiydzenyuy, Jens Holgersson) Telefonnummer: 033 435 4426 (4227, 4219)

Svarsblankett Anonym student-id: Uppgift 1: A B C D a) b) c) d) e) Uppgift 4: A B C D a) b) c) d) e) Uppgift 2: A B C D a) b) c) d) e) Uppgift 5: A B C D a) Svar: b) Svar: c) d) Svar: e) Svar: Uppgift 3: A B C D a) b) c) d) e) Uppgift 6: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: Uppgift 7: Uppgift 8: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: A B C D a) Svar: b) Svar: c) Svar: d) Svar: e) Svar: 2

1. Svara med något av de angivna alternativen på följande frågor. (a) Moderna datorer bygger på en design av von Neumann och detta beror bland annat på att A. von Neumans dator möjliggör ett programkoncept där instruktioner kan lagras, hämtas och exekveras från ett gemensamt minne. von Neumans datorkoncept bygger på en avancerad processorteknik. von Neumans datorkoncept tillåter olika typer av beräkningar. D. von Neumans datorkoncept möjliggör ett programkoncept som är lätt för människor att förstå. (b) En processor huvudsakligen har som uppgift att? A. Skydda operativsystemet Hantera kommunikation med periferienheter Hantera lagring av data med hjälp av register D. Hantera ändring av värden med hjälp av ALU (c) Alla processorer exekverar enligt följande ordning? A. Avhämtning, exekvering och avkodning Avkodning, exekvering, programräknare Avhämtning, avkodning, ALU och programräknare D. Programräknare, Avkodning, Register (d) MMU möjliggör ett virtuellt minne genom att? A. Skydda program från oönskade intrång. Att ändra vilket minne som är åtkomligt vid schedulering Upptäcka program som har gått sönder, och som t.ex. skriver i minne som är avsett för kod. D. Hålla reda på vilka delar av programmet som finns i minnet. (e) Din granne köpte två likadana HP bärbara datorer med 14 tums skärm från Elgiganten till sina två barn som börjar på gymnasiet. Bland specifikationerna för varje dator är: RAM 1600MHz. Efter att ha använt datorerna i endast en vecka visade sig att den ena var snabbare än den andra. Eftersom din granne vet att du pluggar datorutbildning på HB, bestämmer de för att söka din hjälp att förklara varför. Vilken av följande skulle du kunna rekommendera till din granne? A. Det är tillverkningsfel, lämna tillbaka datorn till Elgiganten Datorerna kan behöva olika klockcykler för att exekvera varje instruktion Det kan vara fel som uppstod under transport D. Hastighet på datorerna är inte samma 1

2. Svara med något av de angivna alternativen på följande frågor. (a) När processorn i en C64 har slutfört en instruktion, för att ta reda på nästa instruktion som ska exekveras använder processorn? A. Programräknaren (PC) Ackumulatorn (A) Stackpekaren (SP) D. Flaggor i Statusregistret (SR) (b) För att köra källkodprogram på en dator måste följande processer exekveras? A. Tolkning (eng. Parsing), Grammatikanalys, Kodgenerering Interpretering, Kodgenerering, Syntaxanalys Lexikalanalys, Tolkning (eng. Parsing), Kodgenerering D. Exekvering, Interpretering, Kodgenerering (c) Hur skiljer sig ett programspråk i tredje generation som BASIC från ett annat programmeringsspråk i fjärde generation som Java? A. För att tredje generations programmeringsspråk kan använda sig av högnivåprimitiver För att tredje generations programmeringsspråk kör på alla datorer men inte fjärde generations programmeringsspråk För att tredje generations programmeringsspråk klassas som imperativ medan fjärde generations programmeringsspråk kan vara imperativ men också objektorienterad D. För att tredje generations programmeringsspråk kan använda sig av lågnivåprimitiver (d) Interpretator kan göra ett program långsammare. Detta beror på att? A. Den behöver själv kompilera till maskinkod Den kräver en del resurser under kompilering Nej, inte om den använder JIT-interpretator D. Det beror på vilken processor finns i datorn (e) Ett program som implementeras med hänsyn till parallellisering har förmåga att? A. Använda flera processorer samtidigt Förkorta klockcykeln för varje instruktion Spara minnet på bästa sätt D. Köra flera programdelar samtidigt (5p) 2

3. Svara med något av de angivna alternativen på följande frågor. (a) En funktion med typen [Integer] -> [Bool] -> Bool? A. Tar in en lista av heltal och ett booleskt värde som argument och returnerar ett booleskt värde som resultat. Tar in en lista av heltal och en lista av booleska värden som argument. Tar in en funktion av typen lista av heltal till lista av booleska värden som argument och returnerar ett booleskt värde som resultat. D. Tar in en mängd (Set) och en lista av booleska värden som argument. (b) Funktionen foldr som tar in en funktion, som tar två argument av två godtyckliga typer och returnerar ett resultat av den senare typen; ett värde av samma typ som funktionens andra argument; och en lista med element av samma typ som funktionens första argument och returnerar resultatet (av samma typ som funktionens andra argument) av att applicera funktionen mellan vart och ett av elementen i listan har typen? A. a -> b -> [a] -> [b] (a -> b -> b) -> b -> [a] -> b a -> b -> b -> b -> [a] -> b D. (a -> b) -> b -> [a] -> b (c) Vad är sant om programspråket Haskell? A. Det som skrivs i.hs källkodsfilen är definitioner, d.v.s. namngivna uttryck. Listor och par är de enda sammansatta datatyperna i Haskell. Ett Haskell program består av en sekvens av kommandon. D. Alla funktioner är antingen sanna eller falska. (d) Funktionen foo är definierad enligt följande foo x = if x == 0 then [] else x:foo (x-1) Vilket av följande påståenden gäller för f? A. Funktionens typ är a -> [b]. Funktionens första argument måste vara av listtyp. Funktionen tar in ett numeriskt värde som argument och producerar en lista av numeriska värden. D. Funktionen är felaktigt formulerad och kan därför inte laddas in (p.g.a. syntax- eller typfel). (e) Vad är sant om funktionen map :: (a -> b) -> [a] -> [b]? A. Funktionen tar en funktion som tar ett argument av typen a och returnerar ett booleskt värde som sitt första argument. Funktionen tar ett värde av typen a, ett värde av typen Bool och en lista med element av typen a som argument. Funktionens första argument är en funktion som används för att göra om varje element i dess andra argument till ett element i resultatet. D. Funktionens första argument är en funktion som tar ett värde av typen a och ett värde av typen b som argument och returnerar ett värde av typen [a]. (5p) 3

4. Svara med något av de angivna alternativen på följande frågor. (a) Vilket av följande påståenden om programspråket Prolog är sant? A. Rekursion används aldrig i Prolog. Prolog är speciellt lämpat för numeriska beräkningar. Prolog använder lat evaluering. D. En fråga i Prolog kan ha flera svar. (b) Ett predikat p([a,b,c]) i Prolog? A. Är en lista eller ett heltal. Definierar en relation över sina 3 argument. Kan vara sant för listvärden med 3 element. D. Är alltid en funktion med 2 argument som beräknar ett returvärde i (c) Vad är sant om predikatet fob( ) nedan? fob([_]). fob([x XS]) :- fob(xs). A. Predikatet är syntaktiskt felaktigt och kan inte laddas in eller köras. Predikatet är sant för alla list-värden. Predikatet är inte deklarativt. D. Predikatet använder inte rekursion. (d) Vad blir svaret på följande Prolog-fråga ingredient(rice,3)=ingredient(i,_).? A. true. false. I=rice. D. rice=i. (e) Listan [1,2,3] och mönstret [A, B] matchar? A. Aldrig. Om A instansieras till 1 och B till [2,3]. Om A instansieras till 1 och B till 2. D. Om A instansieras till 1 och B till [2]. (5p) 4

5. Studera följande givna ASSEMBLER-program för Commodore 64. Svara kortfattat på var och en av frågorna med ett av de givna alternativen, alternativt ett specifikt värde. (a) Vad har ackumulatorn för värde när programmet når adressen $100E?,1000 LDA #$04,1002 STA $2000,1005 JSR $2000,1008 CMP #$03,100A BEQ $100E,100C LDA #$02 D. Okänt, då programmet kraschar under körning (b) Vilket värde har minnet på adress $2000 när programmet antingen når adressen $100E eller kraschar?,1000 LDA #$05,1002 STA $2000,1005 DEC $2000,1008 CMP #$02,100A BEQ $100E,100C LDA #$01 D. Okänt, då programmet kraschar under körning (c) Vad blir utskriften från nedanstående program, om vi antar att minnet på adress $2000 har värdet $00?,1009 LDA $2000,100C CLC,100D JSR $FFD2,100F ADC #$01,1012 STA $2000,1014 CMP #$09,1016 BNE $1009 A. Siffrorna 0 till och med 9 Siffrorna 1 till och med 9 Siffrorna 1 till och med 8 5

(d) Vilket värde har minnet på adress $2000 när programmet når adressen $100C, givet att minnet på adress $2000 har värdet $01 från början?,1000 LDA #$02,1002 CLC,1005 INC $2000,1006 ADC #$03,1008 CMP #$05,100A BNE $1002 (e) Vilket värde har minnet på adress $2000 när programmet når adressen $1010, givet att minnet på adress $2000 har värdet $01 från början?,1000 LDA #$02,1002 SEC,1003 DEC $2000,1006 CMP #$01,1008 BEQ $1010,100A ADC #$02,100C CMP #$04,100E BNE $1002 (5p) 6

6. Studera följande givna BASIC-program för Commodore 64. Svara kortfattat på var och en av frågorna med ett av de givna alternativen, alternativt ett specifikt värde. (a) Vad blir utskriften från nedanstående program? 10 JAN=3 20 NILS = JAN 30 NISSE = 4 40 JAN = NILS + NISSE 50 PRINT NISSE+NILS*2-JAN (b) Vad blir utskriften från nedanstående program om användaren matar in talen 3 och 4? 10 B=2 20 INPUT A 30 B = A 40 INPUT C 30 PRINT A+B-C (c) Vad blir utskriften från nedanstående program om användaren matar in talen 3 och 4? 10 INPUT B 20 INPUT A 30 IF ((B<4) AND (A>4)) AND NOT (A>9) THEN B=B-1 40 IF (A>4) OR ((B>2) AND NOT (B<9)) THEN A=A+1 50 PRINT A+B 7

(d) Vad blir utskriften från nedanstående program? 10 FOR X=0 TO 3 20 FOR Y=1 TO 5 30 S=S+1 40 NEXT Y : NEXT X 50 PRINT S (e) Vad blir utskriften från nedanstående program? 10 FOR X=2 TO 11 STEP 3 20 GOSUB 100 30 NEXT X 40 PRINT S 50 END 100 N=N+1 110 S=S+X 120 M=S/N 130 RETURN (5p) 8

7. Studera följande givna HASKELL-program noga. Svara kortfattat på var och en av frågorna med ett av de givna alternativen. (a) Vad blir värdet på uttrycket f [3,2,1] givet nedanstående definition av f? f [_] = 1 f (x:xs) = x*x + f xs D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (b) Vad blir värdet på uttrycket g 3 (+) givet nedanstående definition av g? g x y = y x x D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (c) Vad blir värdet på uttrycket fun 3 givet nedanstående definition av funktionen fun? fun 0 = [] fun 1 = [1] fun n = fun (n-1) ++ fun (n-2) D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning 9

(d) Vad blir värdet på uttrycket filter f [3,2,1] givet nedanstående definition av funktionerna filter och f? filter p [] = [] filter p (x:xs) = if p x then x : filter p xs else filter p xs f x = x+x == x*x D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (e) Vad blir värdet på uttrycket take 3 (gen 3) givet nedanstående definition av funktionerna gen och length? gen x = x:gen (x+1) take 0 xs = [] take n [] = error "taking too many elements" take n (x:xs) = x : take (n-1) xs D. Inget, funktionsdefinitionerna eller uttrycket är felaktigt och ger typfel eller kraschar vid körning (5p) 10

8. Studera följande givna PROLOG-program noga. Svara kortfattat på var och en av frågorna med ett av de givna alternativen. (a) Vad blir svaret på frågan mm(5,[1,2,3,4,5,6,7]). givet definitionen av predikatet mm() nedan? mm(_, [Y,YS]). mm(x, [Y YS]) :- X \= Y, mm(x, YS). A. true false (b) Vad blir svaret på frågan f(s(s(0)), B, s(s(s(0)))). givet definitionen av predikatet f() nedan? f(0, B, B). f(s(a), B, N) :- f(a, s(b), N). A. true false <Ange det eller de värden på N som Prolog svarar med> (c) Vad blir svaret på frågan lt([1,2]). givet definitionen av predikatet lt() nedan? lt([a]). A. true false 11

(d) Vad blir svaret på frågan dark(y),large(y). givet faktan och reglerna nedan? large(pumpkin). large(melon). small(apple). small(orange). orange(pumpkin). yellow(melon). green(apple). red(apple). orange(orange). dark(z) :- orange(z). dark(z) :- red(z). A. true false <Ange det eller de värden på Y som Prolog svarar med> (e) Vad blir svaret på frågan px(z,[3,2,1]). givet definitionen av predikatet px() nedan? px([],[]). px([x,x Xs],[X Ys]) :- px(xs,ys). A. true false <Ange det eller de värden på Z som Prolog svarar med> (5p) 12

Lathund 6502 Assembler Syntax Semantik LDA #<value> A value LDA <address> A memory STA <address> memory A CMP #<value> Z C V N (A value) CMP <address> Z C V N (A memory) BEQ <address> if Z=1 then PC address BNE <address> if Z=0 then PC address DEC <address> memory memory - 1 INC <address> memory memory + 1 CLC C 0 ADC <value> A A + value + C SBC <value> A A - value not C JMP <address> PC address JSR <address> save PC on stack. PC address RTS restore PC from stack. Kernal subrutin $FFE4 $FFD2 A key currently pressed on keyboard prints out ASCII-code in A as character on screen Maskinkodsmonitorns inbyggda hjälp visas med: F1 ASCII x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xa xb xc xd xe xf 2x bla nk! " # $ % & ' ( ) * +, -. / 3x 0 1 2 3 4 5 6 7 8 9 : ; < = >? 4x @ A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z [ \ ] ^ _ 13

Lathund BASIC Syntax Semantik <var> = <expr> variable var value of expr GOTO <nr> execute code with line nr IF <expr> THEN <nr> if boolean expr is true then execute code with line nr PRINT <expr> display value of expr PRINT string display character string INPUT <var> variable var value inputted from user FOR <var>=<start> TO <stop> STEP <step> var start. for every loop increase var with step until var is equal to stop. NEXT <var> execute next loop-lap of corresponding FOR END end execution RUN <nr> start execution at code line nr LIST display current program 14

LATHUND HASKELL Namn på identifierare för värden (funktioner är också värden) börjar med liten bokstav, exempel: map, filter Namn på typer börjar med stor bokstav, exempel: Int, Double Mönstret _ matchar vilket värde som helst Listvärden skrivs inom [ ], exempel [1,2,3] Vid mönstermatchning och konstruktion av listor används : för att skilja huvud från svans, exempel: (x:xs) Syntax Semantik x = 42 Identifieraren x har värdet 42 f x = x+2 f är en funktion som tar ett argument, x, och returnerar värdet x+2 Main> f 4 6 :: Integer Kör funktionen f i Hugs 15

LATHUND PROLOG Predikat, konstanter, strukturer börjar med liten bokstav, exempel: member, john, date Variabler börjar med stor bokstav, exempel: X, Head _ betecknar den anonyma variabeln Listor skrivs inom [ ] används för att skilja huvud från svans, exempel: [Head Tail] Tilldelning av aritmetiskt värde görs med is. Syntax Semantik man(john). faktum (eng. fact) likes(john,x) :- likes(x,wine). regel (eng. rule)?- likes(john, X). fråga (eng. question)?- Y is 5*6+7. fråga (eng. question) 16