2D1312 Programmeringsteknik och matlab för I
Hösten 2005 (Prgi05)
Övningsassistent: Johannes Hjorth (grupp 2)

67 industriella ekonomer kan inte ha fel... ;)

Välkomna till övningsgrupp tvås websida. Nytt för i år är att kursen nu inte bara handlar om javaprogrammering utan vi går även igenom lite grundläggande matlab.

Här har jag lagt upp de övningsanteckningar som delats ut på övningarna. Ni finner dem lite längre ner på sidan.

Länk till Vahids kurshemsida.


Viktig information

2005-11-25 Kursen är klar!

Hoppas ni känner att javakursen har varit både utmanande och intressant. Det har varit roligt för mig att vara er assistent. Kanske kan vi fresta er med några fler NADA-kurser... men först har ni gjort er förtjänt av ett skönt jullov, och kanske ett sommarlov också. ;)

Lycka till och glöm inte att utvärdera kursen!
—Johannes

2005-11-22 Extra hjälp

Vahid och jag kommer finnas i datorsalarna och hjälpa till klockan 15:00. Sprid gärna ut det till de andra.

2005-11-20 Vanliga fel på J-redovisningarna!

Här är två vanliga fel som vi ser på J-redovisningarna. Läs gärna igenom dem så kommer din redovisning att gå smidigare:

1) I stort sett är det bara main-metoden som ska vara deklarerad static. Ett av målen med kursen är att vi ska använda oss av objekt då vi programmerar. Skapa en instans med new och anropa instansmetoder istället.

2) Vidare ska main-metoden endast innehålla en liten del av koden, anropa istället andra metoder. En tumregel är att ju mer komplicerad metoder ni har, destu kortare ska de vara.

Har du råkat göra något av dessa saker bör du ändra ditt program innan du redovisar! De leder nämligen till flera anmärkningar i redovisningsprotokollet.


Fler tips...

Instansvariabler bör vara private, behöver ni kunna nå dem använd då publika instansmetoder för detta. Tanken är att objekten ska vara en komplett enhet med både metoder och data. Instansvariablerna ska vara skyddade utifrån. (Detta var tidigare ett krav men inte längre. Kan dock vara bra att tänka på ändå)

Indentering (intabbning) av koden tillsammans med vettiga metod och variabelnamn gör koden mer lättläst. Det är också bra att gruppera liknande satser tillsammans (avskilj med tomma rader). Jämför dessa två exempel. Antag nu att programmet är ett par hundra rader långt och ni förstår varför det är bra att städa koden.

Gör variabler så lokala som möjligt. Instansvariabler ska bara vara sådana som har betydelse under hela objektets livslängd. Temporära variabler finns bara i den loop där de används.

Vad innebär hårdkodning? Ifall du kodar ett minröjningsspel och överallt där du behöver använda storleken på planen har du skrivit in siffran 5. Om du senare upptäcker att du vill kunna variera storleken måste du gå in och ändra på många ställen — det är hårdkodat. Hade du istället använt en variabel hade det bara varit ett ställe att ändra på. Hårdkodning medför artificiella begränsningar i din kod.

Undvik kodupprepning, finns det någon bit kod som upprepas snarlikt flera gånger, ersätt det då med en metod som du anropar. Vill du senare ändra på något i den koden är det nu bara ett ställe att ändra, mer överskådligt och mindre risk för fel.

För mer information, se granskningsprotokollet.


Utvärdera kursen

Du har väl inte glömt att fylla i kursutvärderingen? Det är ert sätt att påverka utformningen av kursen. Vad tycker du har varit bra, vad behöver förbättras?



2005-10-17
Sista dagen för redovisning av Lab5 med bonus.

2005-10-20
Inlämning och självrättning av frivilliga Hemtal 4 i Java.

2005-10-27
Java-provet klockan 8-10 i sal röd, orange, gul och brun.
Sista dagen för inlämning av J-spec.

2005-11-25
Sista dagen för redovisning av J-uppgiften för betyg högre än 3. Är uppgiften godkänd 25 november går det att plussa till högre betyg inom ett år. Har däremot J-uppgiften inte redovisats senast detta datum kan den fortfarande redovisas med då fås bara betyg 3.

2006-09-06
Sista dagen för att redovisa J-uppgift eller plussa. Intjänad bonus till provet försvinner!

 

Vanliga funderingar kring Lab5

Vi har i Lab5 ett antal Person-objekt som ligger sparade i en ArrayList. När vi sedan vill anropa en instansmetod som beräknaBMI() så ska vi inte skicka med några parametrar till den metoden. Varför? Jo instansen vet redan längd och vikt, de ligger lagrade i de egna instansvariablerna.

Det är ett och samma program som ska klara av att läsa från fil ifall användaren kör programmet med en inparameter (tex. java minLab5 personer.txt) eller ifall ingen inparameter anges så ska den fråga användaren om namn, längd och vikt. Vi ska inte ha två separata program för det.

Om vi har en String-array som String[] inparameter (vilket är fallet för main-metoden), så får vi reda på längden med inparametrar.length vilken vi kan jämföra med en siffra, som noll, i en if-sats.


J-uppgiften
Nu är snart alla inledande labbar klara, titta därför gärna igenom informationen om J-uppgiften som Vahid lagt upp på kurshemsidan. Där finns också en lista på J-uppgifter att välja mellan.

Välj vilken uppgift du vill göra! Notera att uppgifterna 188-192, 194 har en färdig J-spec och bara kan ge betyg E.

Skicka in J-specen
Efter att du skrivit din spec i en java-fil och sett till att den går att kompilera så ska du ladda upp den. Om du behöver lite inspiration till din J-spec kan du titta på sista övningen eller kolla på J-uppgifterna med färdig spec. Säg till om det är några problem med uppladningen. Deadline är midnatt (23:59) den 27 oktober.


Boka redovisningstid

När J-uppgiften är färdig ska den redovisas. Granskaren ska närvara vid redovisningen. Har du redovisat och fått godkänt före 25 november går det att plussa till högre betyg inom ett år från kursstart. Därefter går det bara att få betyg tre enligt nuvarande regler.

Restlabbar

Har du något moment kvar? Information om hur restlabbar redovisas finns på uppsamlingssidan. Vår kurs 2D1312 är en svagt muterad form av kursen 2D1310, endast matlabdelen skiljer.


Öva till datorprovet
Det finns ett antal testfrågor online som Erik Fransén har gjort. Han var I:s föreläsare på kursen förra året. Titta också igenom föreläsnings- och övningsanteckningar samt boken och blåa häftet. [1] [2] [3] [4] [5] [6] [7]


2005-10-27 Datorfacit felaktigt!
Som de flesta av er redan upptäckt hade datorprovet fel i det automatiska rättningsfacitet på ett flertal uppgifter. Ny uppdaterad resultatlista kommer inom kort, troligen imorgon. Den ska bara dubbel och trippel kollas först. Statistik finns inte ännu klar eftersom några försökt att lämna in provet flera gånger och därmed förekommer många gånger i resultatlistan (allt loggas dock). En snabb uppskattning är omkring 90% godkända på provet.
Uppdatering: Proven är nu färdigrättade.




Övningsanteckningar och bra länkar

Java övning i E32 för Industriell ekonomi

För er som inte har fått tag på kursbunten ännu så finns i alla fall labbarna online i pdf format.

  • Övning 1 - Torsdagen 15 september.
    Introduktion till Matlab
  • Övning 2 - Tisdagen 20 september.
    Introduktion till Java, flödeskontroll
  • Övning 3 - Tisdagen 27 september
    Metoder och arrayer, hur hanterar man stora mängder data?
  • Övning 4 - Tisdagen 4 oktober
    Klasser och instanser, hur hänger de ihop?
  • Övning 5 - Torsdagen 7 oktober
    Mer om klasser, instanser, filinläsning och felhantering
  • Övning 6 - Tisdagen 11 oktober
    Ett smakprov på grafik, arv och Java API
  • Övning 7 - Torsdagen 20 oktober
    Inför J-uppgiften, specifikation mm.

För mer information, se kurshemsidan.



Tillbaka till Johannes undervisningssida (email)