Göm menyn

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: 2022-01-12