Luleå University of Technology

Imperativ programmering för EFI, SMD038

Hösten 2000

Kursansvarig: Torkel Franzén
Email: torkel@sm.luth.se
Rum: A3413A
Telefon: 0920/91108


Kursinformation

Examinationen består dels av en skriftlig tentamen (3 poäng) dels av en inlämningsuppgift (1 poäng).

OBSERVERA: Följande gäller för dem som läser kursen nu ht 2000, men inte för dem som tentar om. För att kunna bli godkänd på tentan är det nödvändigt att ha redovisat inlämningsuppgiften. (Den behöver däremot inte ha blivit slutgiltigt godkänd, utan eventuella klagomål från min sida får åtgärdas efter tentan, under förutsättning att den lösning som redovisas är fullständig och testad.) Det är alltså inte möjligt att först bli godkänd på tentan och senare komplettera med inlämningsuppgiften. Om inlämningsuppgiften inte redovisats till angivet datum måste såväl inlämningsuppgift som skriftlig tentamen göras om till omtentan i april 2001.

Kommentar: När du redovisat din lösning och fått en första kommentar från mig (med godkännande eller klagomål) kan du utgå från att du kan göra tentan. Om den redovisade lösningen har så stora brister att du måste inkomma med en förbättrad version före tentan så kommer jag speciellt att påpeka detta. Om du redovisat uppgiften men ännu fått den slutgiltigt godkänd har du till omtentan på dig att fixa de sista buggarna och få lösningen godkänd.

Om senare redovisning av inlämningsupgiften: Den som inte gjort redovisat inlämningsuppgiften i tid, och alltså får göra omtentan i april, får redovisa sin inlämningsuppgift någon gång före omtentan. Det finns alltså ingen annan deadline för redovisningen än att den ska vara gjord före tentan.

Information och anvisningar om inlämningsuppgiften.

Schema för föreläsningar och övningstillfällen.

Detaljschema för föreläsningarna. Vid första föreläsningen 25/10 kommer jag att gå igenom vad kursen är tänkt att innehålla och ge, samt lämna ut "körkort" till datorsalarna.

Registrering kan göras på registreringslistan vid någon av de tre första föreläsningarna. Den som vill registrera sig därefter måste vända sig till Systemtekniks studieexpedition i A-huset.

Frågor om kursen eller om Java...

...kan du skicka i email till torkel@sm. Observera att alla sådana email någonstans ska innehålla smd038 - annars finns det ingen garanti att jag hittar era mail.

Kurslitteratur

Java från grunden av Torkel Franzén, Studentlitteratur 1999. Finns på Bokis.

Datoranvändning

Information om övningar, information och fordringar när det gäller praktisk kunskap i användningen av arbetsstationerna finns här.

Kursutvärdering

Om detta, se här.

Om övningspassen

Övningspassen ägnas åt arbete med programmeringsuppgifterna i läroboken (eller andra valfria nyttiga övningar i programmering i Java) samt åt arbete med inlämningsuppgiften. De första övningstillfällena kan också ägnas åt att öva användning av arbetsstationerna, Emacs, Netscape, email.

Val av grupp: GrÖ i schemat står för öppen ingång, F1 för fysik 1, Ry1 för rymd 1. Om du inte tillhör någon av dessa kategorier, välj själv en lämplig grupp.

Dokumentation av Javas bibliotek

För jdk 1.2.

För jdk1.3 Information om Unicode hittar man på Unicodekonsortiets webbsidor.

Nyheter och påpekanden

Under denna rubrik läggs allmänna påpekanden och upplysningar som blir aktuella under kursens gång.

Om rättning av tentan: Resultaten kommer att finnas tillgängliga senast 23/1.

Om betygsättningen av tentan: Min regel vid rättningen har varit att höja betyget från 3 till 4 bara om minst två frågor på uppgift B fått acceptabla svar. Betyg 5 har bara getts om alla fyra frågorna på uppgift B fått acceptabla svar.

Frågan B2 har av många tolkats felaktigt, och besvarats med att ge exempel på instansvariabler med samma namn som kan förekomma i flera klasser (t.ex. "namn"). Det som efterfrågas är emellertid instansvariabler i en klass vars värde tillhör den andra klassen, till exempel en instansvariabel lärare i klassen Kurs, vars värde tillhör klassen Lärare. Det är alltså fråga om "har-en"-relationen mellan klasser.

Om filhantering: Använd java1.2 vid lösning av uppgifter som inbegriper filhantering. Det finns en del skillnader mellan 1.2 och tidigare versioner, och det är lättare att undvika förvirring om alla använder 1.2.

Om tentan: Någon typtenta kommer inte att läggas upp. I stället gäller följande. Förberedelserna för tentan består i första hand att arbeta med och lämna in en lösning av inlämningsuppgiften, i andra hand att lära sig att förstå grundprinciperna i objektorienterad programmering, och hur klasser, objekt, delklasser, abstrakta klasser, gränssnitt ska förstås och användas. Om man förberett sig på detta sätt bör uppgifterna på tentan inte erbjuda något problem.

Om testning av lösningar: kom ihåg, när det gäller lösningar som inbegriper hantering av text och filer, att testa era lösningar även på större filer. Lösningar som är "orimligt slöa" kommer i retur.

För vissa program kan du behöva metoder som finns i jdk1.2 men inte i tidigare versioner. Ge kommandot

module add java1.2
i shellfönstret för att vara säker på att få 1.2.

Du kan använda Per Holms klass SimpleInput för att få input till ditt program från tangentbordet.

OBSERVERA: Följande gäller för dem som läser kursen nu ht 2000, men inte för dem som tentar om. För att kunna bli godkänd på tentan är det nödvändigt att ha redovisat inlämningsuppgiften. (Den behöver däremot inte ha blivit slutgiltigt godkänd, utan eventuella klagomål från min sida får åtgärdas efter tentan, under förutsättning att den lösning som redovisas är fullständig och testad.) Det är alltså inte möjligt att först bli godkänd på tentan och senare komplettera med inlämningsuppgiften. Om inlämningsuppgiften inte redovisats till angivet datum måste såväl inlämningsuppgift som skriftlig tentamen göras om till omtentan i april 2001.

Kommentar: När du redovisat din lösning och fått en första kommentar från mig (med godkännande eller klagomål) kan du utgå från att du kan göra tentan. Om den redovisade lösningen har så stora brister att du måste inkomma med en förbättrad version före tentan så kommer jag speciellt att påpeka detta.

En tilläggskommentar har gjorts under rubriken "Att testa program" på webbsidan med inlämningsuppgiften. Kommentaren gäller att felmeddelanden från program ska vara så upplysande för användaren som möjligt.

Program från föreläsningar:

  1. Sortera, första versionen.
  2. Sortera, andra versionen.
  3. Sortera, rekursiv version.
  4. Klassen Personinfo.
  5. Personer.
  6. Sortera textfiler.
  7. Sorterare.
  8. Skriv.
Javasystemet jdk 1.2 kan laddas ner till din Windowsmaskin från Sun.

JDE-Emacs eller annan Javahjälp. Javasystemet från Sun innehåller ingen texteditor och inget fönsterinterface för kompilering eller exekvering av Javaprogram. java och javac måste i Suns paket anropas från kommandoraden i ett DOS-fönster. Det finns emellertid flera gratisprogram på nätet som hjälper till med att skriva, kompilera och exekvera Javaprogram. Du kan hitta dem genom en websökning. Här följer direktpekare till två sådana program:

JDE-Emacs är Emacs med samma JDE-hjälpmod för Java som finns tillgänglig här på skolan. Installationen kan fordra en del kunskaper i Emacs-hantering.

Jasupremo är en utvecklingsmiljö för Javaprogram implementerad i Java (fordrar jdk 1.2).

Du kan direkt på webben läsa Bruce Eckels utmärkta bok Thinking in Java. Obs att det inte är meningen att du ska skriva ut boken.

Rättelser till läroboken.

Dagens rättelser

Under denna rubrik kommer jag att stoppa in rättelser av sådant som sagts på föreläsningarna och i efterhand befunnits vara nonsens eller på annat sätt tvivelaktigt.

Rättelse till 30/10: Teckenkonstanter med \ och hexadecimal kod skrivs inte på det sätt som jag illustrerade, utan på det som anges i läroboken.

Kommentar till 9/11: Jag kom först i efterhand på varför det är bättre att säga att en sådan konvertering som (int) a i Java utförs genom att alla decimaler i a kastas bort än att säga att det sker en "avrundning nedåt": (int) -3.55 ger resultatet -3, vilket ju avrundningsmässigt sett är en avrundning uppåt, alltså till närmast större heltal.

Gamla tentor

Observera att tentan på kursen ht2000 inte kommer att se ut på samma sätt som tidigare. Speciellt gäller att det enda tillåtna hjälpmedlet kommer att vara kursboken eller någon annan lärobok i Java - alltså inga anteckningar, gamla tentor, osv. (Läroboken får innehålla marginalanteckningar och andra markeringar.)Tentan kommer inte att vara av flervalstyp, utan kommer i stället att handla om programmeringsuppgifter.

Närmare kommentar om tentan. Den viktigaste förberedelsen för att bli godkänd på tentan består i att arbeta med och redovisa inlämningsuppgiften. Det bör inte vara något problem för den som gjort inlämningsuppgiften att bli godkänd på tentan. Om du har ambitionen att få betyget 4 eller 5 består den bästa förberedelsen i att gå igenom och fundera över klasser och tillhörande begrepp. Vad är en klass, och hur används klasser i programmering? Vilka relationer kan det finnas mellan klasser i ett program? Med andra ord gäller det att förstå klasser och objekt och deras användning i programmering på ett mer principellt plan.

Om komplettering: Resultatet "K3" på tentan betyder att tentan är godkänd med betyger 3 under förutsättning att en komplettering görs senast den 5 februari (och motsvarande för "K4" och "K5"). Kompletteringen ska i samtliga fall bestå i att en bättre beskrivning görs av den algoritm som används i den inlämnade lösningen. Kompletteringen skickas i email till torkel@sm, med Subject-raden "Komplettering SMD038".

Tilläggskommentar om omtenta: De som tenterar om på SMD038 nu i december kommer att få en tenta i den gamla stilen - se de tre senaste tentorna nedan. Även för omtentare gäller att läroboken eller någon annan Javabok är det enda tillåtna hjälpmedlet. För dem som tentar om gäller också att de inte behöver vara godkända på inlämningsuppgiften innan de gör omtentan.

Om senare redovisning av inlämningsupgiften: Den som inte redovisat inlämningsuppgiften i tid, och alltså får göra omtentan i april, får redovisa sin inlämningsuppgift någon gång före omtentan. Det finns alltså ingen annan deadline för redovisningen än att den ska vara gjord före tentan.

Om redovisning av restgodkända: Administrationen av SMD038 är på sparlåga fram till omtentan i april. Alla som senare blivit godkända på tenta eller inlämningsuppgift kommer då att inrapporteras. Studenter som är i desperat behov av poäng får höra av sig till mig.

Om omtentan i april 2001: Denna tenta kommer att vara (för alla tenterande) en flervalstenta av samma typ som de senaste tentorna i samlingen nedan, fast inte nödvändigtvis utformad på exakt samma sätt som någon tidigare tenta. Det är hur som helst enbart fråga om flervalsfrågor, och genomgång av de tidigare flervalstentorna är en relevant förberedelse. Tillåtet hjälpmedel är valfri lärobok i Java (marginalanteckningar och dylikt behöver inte tas bort).

Om omtentan i augusti 2001: Detsamma gäller som för omtentan i april. Eftersom elevdatorerna ligger i malpåse under sommaren är det tillåtet att göra omtentan utan att ha redovisat inlämningsuppgiften.