Laborationer


Laborationsdelen av kursen består dels av ett antal enklare programmeringsuppgifter, dels av en större programmeringsuppgift. De enklare uppgifterna redovisas för labbhandledaren vid de schemalagda laborationstillfällena. Den större programmeringsuppgiften redovisas för läraren på kursen. Närmare information om uppgifter och redovisning ges för varje läsperiod.

Alla uppgifter ska lösas individuellt. Det betyder att det är fullt tillåtet att diskutera olika problem och deras lösning med andra, men alla svar på frågor och all programkod måste skrivas individuellt av varje student på kursen.

De tidsgränser som gäller för redovisningen under varje period är inte flexibla, och försenade redovisningar kommer inte att accepteras. Den som inte blir färdig med laborationsuppgifterna i tid under den period han eller hon läser kursen måste göra om hela laborationsdelen av kursen under någon annan läsperiod, och följer då de regler som gäller för den läsperioden. Undantag medges bara om det föreligger synnerliga skäl, och ansökan om att få redovisa uppgifter senare inlämnas till huvudläraren för kursen den period det gäller.

Det är inte nödvändigt att ha blivit godkänd på inlämningsuppgifterna för att tentera på kursen.

Ett flertal labtillfällen finns inbokade på schemat. Vid dessa tidpunkter finns labhandledare närvarande som man kan fråga om hjälp. Erfarenheter visar dock att många studenter behöver mer tid än de inbokade tillfällena för att lära sig laborationsinnehållet och därför uppmuntras ni att besöka labbet även då det inte är någon schematid lagd. Labbet har öppet dygnet runt, men efter kontorstid krävs passerkort för att komma in.

För att ni ska klara av laborationerna nedan bör ni lära er lite om UNIX och dess fönstersystem. Vi rekommenderar att ni tittar på websidorna nedan och provar på ett antal kommandon och bekantar er med den miljö ni skall arbeta i.

http://www.cdt.luth.se/~qwazi/smd134/introlab.html (av Josef Hallberg)

och

http://www.sm.luth.se/~torkel/newsmd071/newintro.html (av Torkel Franzen)

Här finns Torkel Franzens läs in klass

Kort guide hur man skriver ut i UNIX-labben

 

  1. Lab 1 består av fyra småprogram som skall konstrueras.
    Redovisas senast 24/1 pass 4.

  2. Din kompis som pluggar till lågstadielärare är helt förstörd. Hon gör just nu sin praktik och förfasar sig över elevernas dåliga kunskaper i multiplikation och ber om din hjälp. Hon vill att du skriver ett program som slumpar och skriver ut en multiplikation mellan två tal (0-10) och förväntar sig ett svar. Om svaret är fel, skrivs det rätta svaret ut. Programmet avslutas genom att man skriver "slut". Ett körexempel:
    java Multiplikation
    6 * 7 ?
    42
    Rätt!
    6 * 8 ?
    42
    Fel! Rätt svar: 48
    10 * 0 ?
    slut
    Redovisas senast 30/1 pass 2.

  3. Skriv ett program (Newton) som implementerar numerisk ekvationslösning (Newton-Raphsons formel) <http://www-solar.mcs.st-and.ac.uk/~alan/MT2003/Numerical/node6.html>. På kommandoraden ges startvärdet för x, x0. Det kan se ut på följande sätt:

    java Newton 2
    1.4142156862745097


    Programmet får bete sig hur som helst om det inte får ett tal på kommandoraden. Du bestämmer själv hur många gånger programmet ska iterera så att skillnaden mellan xn och xn+1 är tillräckligt liten för att lösningen skall accepteras. Fötydligande: Användaren skall alltså inte mata in antalet iterationer, utan programmet skall iterera tills ett tillräckligt exakt värde på x hittats. Pröva dig fram till bra värden. Alla funktioner förutsätts ha nollställen, så du behöver inte ägna någon uppmärksamhet åt komplexa rötter och annat elände.

    För att förenkla saker och ting föreslås ni skriva två metoder, en som returnerar funktionens värde för ett givet x. Till exempel (x2-2):

    private double f(double x){
    return(x*x-2);
    }


    Detta innebär alltså att funktionen, vars nollställen skall finnas, är hårdkodad. Vill du testa en annan funktion måste du ändra i metoden f och kompilera om ditt program. I klassen Math finns matematiska funktioner såsom logaritmer, trigonometriska funktioner etc. ifall du vill testa med svårare funktioner.
    Den andra metoden är metoden private double derivata(double x) som finns i en av övningsuppgifterna.
    Anmärkning: För mer information om Newton-Raphsons formel för ekvationslösning kan du titta i BETA, kapitlet Numerical Solution of Equations, samt länken som är given ovan.
    Redovisas senast 12/2 pass 4.

  4. Skriv en klass Matris som representerar en matris. Matrisen skall endast klara av heltal. Klassens konstruktor skall som argument ta en dubbel array, int [][], som innehåller matrisens element. Klassen skall ha följande publika metoder:
    • public int hämtaElement(int rad, int kolumn)
    • public void sättElement(int rad, int kolumn, int värde)
    • public int antalRader()
    • public int antalKolumner()
    • public Matris addera(Matris m)
    • public Matris subtrahera(Matris m)
    • public Matris multiplicera(Matris m)
    • public void skrivUt()
    hämtaElement returnerar matrisens element på den angivna positionen (rad, kolumn).
    sättElement sätter värdet i matrisen till det angivna värdet på den angivna platsen.
    antalRader returnerar antalet rader som matrisen har.
    antalKolumner returnerar antalet kolumner som matrisen har.
    addera lägger ihop den angivna matrisen m och den här matrisen och returnerar en ny matris med summan i.
    subtrahera funkar likadant som addera, men den drar ifrån istället.
    multiplicera multiplicerar den angivna matrisen m med den här matrisen och returnerar en ny matris med produkten i.
    Vid anrop av skrivUt skall matrisen på ett snyggt sätt skrivas ut på skärmen.

    Skriv nu ett program som skapar två objekt av typen Matris och testar din matrisklass. Se till att testa din klass väl, för du skall använda den i lab 5.
    Redovisas senast 21/2 pass 2.

  5. Den här labben är lite större och mer omfattande. Inlämning ska ske via mail till Tomas Klockar. I mailet skall ni bifoga alla java-filer som ingår i labben, även de som ni inte skrivit själva. Skriv också ert namn, personnummer och användarnamn. Mailet skall ha som ämnesrad "SMD134 - Lab 5", vilket kommer att förenkla vårt arbete avsevärt.
    Labben går ut på att komplettera några redan befintliga klasser för att få ett fungerande minröjarspel. De klasser ni behöver kompletera är Minor.java och MinMatris.java, ni behöver också kopiera Matris.java, från lab 4, till detta bibliotek.
    Funktionalitet:

    Här hittar du tarfilen med klasserna och bilderna ni behöver.
    Här hittar ni Javadocen till de klasserna.
    För att packa upp tar-filen ovan, skriv följande i ett x-term-fönster: tar xvf minor.tar. Då kommer en katalog minor att skapas som innehåller aktuella klasser och bilder.

    Redovisas senast 12/3 kl 18:00.

 

 

Skapad den 2003-01-23 01:02:00 av Peter Lestander