TDP007 Konstruktion av datorspråk
Seminarie 4
Under det fjärde seminariet ska vi experimentera med constraint
networks, som är ett exempel på deklarativ programmering.
I filen constraint_networks.rb
finns ett par versioner av constraint-nätverk. Börja med
att studera de digitala kretsarna som vi tittade på under föreläsningen
och använden metoden test_constraints
för att förstå hur modellen fungerar.
Uppgift 1: Att använda constraint-nätverk
För den här uppgiften ska vi använda ytterligare en variant av
constraint-nätverk som kan användas för att modellera matematiska
samband. Verifiera först att alla constraints fungerar som tänkt genom
att skapa enhetstester för Adder
och
Multiplier
. Det kan
vara så att de inte fungerar helt och hållet som det är tänkt. Om ni
upptäcker att de inte funkar, ändra dem då så att era tester lyckas.
Implementera sedan ett constraint-nätverk för konvertering
av temperatur mellan Celsius och Fahrenheit, eller andra fysikaliska
storheter där ekvationer kan beskrivas med fler operationer än en.
E=m*c^2
eller motsvarande är exempel
på andra lämpliga ekvationer att modellera.
Uppgift 2: Att generera constraint-nätverk
Som nästa steg vill vi kunna beskriva ekvationer som ren text och skapa
constraint-nätverk utifrån dem. I filen
constraint-parser.rb finns en påbörjad
implementation av detta, samt en utskrift av hur man avser att det ska
fungera när det väl är klart. Tanken är att man ska kunna parsa strängen
9*c=5*(f-32)
och då automatiskt skapa ett
constraint-nätverk i stil med det ni gjorde
manuellt i uppgift 1. Det som ni ska göra är att skriva klart implementationen
så som det är tänkt att den ska funka, inklusive enhetstester.
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2025-01-20