Övningar

Du får välja mellan grafikövning a och b, du behöver inte göra båda!

Grafikövning a (Till övningstillfälle nr 4)

Modifiera Star-programmet från övning3 så att färgen slumpas ut för nya stjärnor. Det är bara den nya stjärnan som skapas då användaren trycker på knappen som ska få en ny färg, de som redan har ritats ut ska behålla sin färg.

frivillig extrauppgift (ger ej extra bonus): Utöka programmet så att det blir roligare. Lägg exempelvis till en ny knapp som gör att man kan lägga till andra figurer än stjärnor.

Du behöver ladda ner filerna Star.java, StarModel.java, StarView.java, StarController.java och StarFrame.java från exempelsidan för att kunna göra uppgiften. Håll även reda på vilka rader du har ändrat på så att du är redo att förklara hur du gjorde när du redovisar.

Grafikövning b (Till övningstillfälle nr 4)

Implementera ett grafiskt gränssnitt till fakultetsprogrammet (se övning 1) eller primtalsprogrammet (se övning 4). Användaren ska kunna mata in en siffra och få ett resultat på skärmen. Programmet får inte hänga sig om användaren matar in en ogiltig sträng.

Gränssnittsextraherare (förtydligande)

Du behöver inte ta hänsyn till inre klasser och märkliga strängar, men du får förstås. Du får göra vissa antaganden om hur indata ser ut (exempelvis med avseende på radbrytningar). Skriv en kommentar i din kod eller bifoga en kommentar i ditt mail, där det framgår vilka antaganden du har gjort.

Programmet ska läsa in en fil med javakod och generera ett UML-liknande resultat, antingen genom utskrift på skärmen eller genom att skriva till en ny fil. Om grogrammet exempelvis körs med Complex.java som indata ska ett resultat liknande nedanstående genereras (+,-,# indikerar public, private respektive protected):

+ Complex
----------
- int re
- int re
----------
+ Complex(re:int, im:int)
+ add():Complex
+ sub():Complex
+ mul():Complex
+ div():Complex
+ toString():String
+ main()

Programmet behöver som sagt inte hantera all indata perfekt. Däremot får programmet inte krasha! Det är alltså nödvändigt att implementera felhantering.

Negativa först (Uppgift 54)

Indata ska vara en array med tal (exempelvis heltal men det spelar ingen roll). Din metod ska göra så att de negativa talen kommer före de positiva. Metoden ska gå i linjär tid, det är alltså inte meningen att arrayen ska sorteras!

Rekursionsövning (Till övningstillfälle nr 6)

Läs på om rekursion och trädtraversering. Rita upp ett exempelträd på åtminstone sju olika noder när du löser uppgiften nedan.

Uppgift: Här följer tre rekursiva metoder för att skriva ut alla noder i ett träd. Vad blir det för skillnad?

    • Skriv ut nodens innehåll
    • Om det finns ett vänsterbarn, skriv ut vänsterträdet
    • Om det finns ett högerbarn, skriv ut högerträdet
    • ... men om noden är tom (null) gör jag ingenting.

    • Om det finns ett vänsterbarn, skriv ut vänsterträdet
    • Skriv ut nodens innehåll
    • Om det finns ett högerbarn, skriv ut högerträdet
    • ... men om noden är tom (null) gör jag ingenting.

    • Om det finns ett vänsterbarn, skriv ut vänsterträdet
    • Om det finns ett högerbarn, skriv ut högerträdet
    • Skriv ut nodens innehåll
    • ... men om noden är tom (null) gör jag ingenting.

Grammatik-övning

Olle sitter och rättar ett tentatal. Tentatalet går ut på att man ska skriva en grammatik för meddelande av följande typ:
Båt 42, båt 666, båt 4711 och båt 17 ska in!
Båt 1 och båt 2 ska in!
Båt 13 ska in!

Vilken eller vilka av följande alternativ kan producera dessa meddelanden? Motivera varför de övriga inte kan producera dem (ange exempel på meddelanden som inte kan produceras).

En del av alternativen kan producera oönskade meningar, man vill t.ex. inte ha

Båt 1 och båt 2, båt 3 och båt 4 ska in!

Vilken eller vilka av alternativen kan producera oönskade meningar? Ge exempel.


<meddelande> ::= Båt <tal><svans> | <meddelande> båt <tal><svans>
<svans> ::= och | ska in! | ,
<tal> ::= 1 | 2 | 3 | ...

<meddelande> ::= Båt <tal> ska in! | Båt <tal> <svans>
<svans> ::= och båt <tal> ska in! | , båt <tal> <svans>
<tal> ::= 1 | 2 | 3 |...

<meddelande> ::= Båt <tal><svans>
<svans> ::= ska in! | , båt <tal> | och båt <tal>
<tal> ::= <svans> | 1 | 2 | 3 |...

<meddelande> ::= Båt <tal><svans> | båt<tal><svans>
<svans> ::= ska in! | , | och
<tal> ::= 1 | 2 | 3 | ...

Labyrintprogram

Ladda ner Labyrintprogrammet från exemplkoden, se övning 6.Utöka Labyrintprogrammet (MazeSolver mm) från övning 6 så att följande funktioner finns med: