1. Skriv ett program som utför beräkning av fakultet för heltal. Nedan följer ett exempel på hur programmet skulle kunna fungera.
~/> java factorial 5 120 ~/> java factorial 1 1
2. Skriv ett program som avgör om ett tal är ett primtal (delbart endast med ett och sig själv).
3 Komplettera klassen Complex från förra övningen med en metod för konjugering (negering av den imaginära delen av talet). Föreslå lämpliga testdata.
4 Utvidga klasserna för heltal och komplexa tal från tidigare uppgifter, så att det är möjligt att utföra addition mellan de olika typerna. Föreslå testdata, samt rita ett klassdiagram
5 Vid en fabrik finns ett antal maskiner som används för att sätta sam- man detaljer till färdiga produkter. Detaljerna kommer från ett antal olika leverantörer. En produkt består av ett stort antal detaljer och kräver därför behandling av flera maskiner. Varje maskin har en viss kapacitet. Rita en modell som kan beskriva verksamheten
6 Du får välja mellan en av dessa grafikövningar a och b, du behöver inte göra båda!
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.
7 Skriv ett program som går igenom en Java-programfil och extraherar gränssnittet hos den yttersta klassen. 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.
8 MPEG Layer 3 är ett format för att lagra ljud, detta format sparas ofta i filer medändelsen "mp3". mp3-filer används i många sammanhang för att lagra musik. I många mp3-filer lagras även tillhörande information om artist, låtnamn o.s.v. Det finns en standard som heter ID3 2 som går ut på att de sista 128 byten i en mp3-fil innehåller denna typ av information. Nedan följer en tabell som beskriver vad de 128 byten innehåller.
| fält | längd | offset | innehåll |
| tag | 3 | 0 | Detta fält innehåller alltid "TAG". |
| titel | 30 | 3 | Låtens titel. |
| artist | 30 | 33 | Artistens namn. |
| album | 30 | 63 | Namn på skivan från vilken låten kom. |
| år | 4 | 93 | Produktions år. |
| kommentar | 30 | 97 | En kommentar utan bestämt innehåll. |
| genre | 1 | 127 | Musikgenre. |
~/> java ID3 track02.mp3 Title: Soak Up The Sun Artist: Sheryl Crow Album: C'mon, C'mon Year: 2002I katalogen /info/suoop08, oop09/Exempel/mp3/ finns några mp3- filer som kan användas för att testa att programmet fungerar. För den intresserade finnsäven en lista över genrer
9 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?
Antag att det finns objekt som lagrar 0 - 1000 element (av någon sort). Dessa objekt innehåller metoder för att sortera de lagrade objekten och för att ta en lista av objekt av samma sort och generera en lista av objekt som representerar en enda sorterad följd. Skriv en klass som realiserar denna idé
Skriv en metod som, utan att sortera, undersöker om en lista är sorterad (oberoende av sorteringsordning).
11 . Skriv en metod för att en lista med positiva och negativa tal ordnas så att de negativa talen kommer först och sedan de positiva. Negativa respektive positiva tal behöver inte vara sorterade, du behöver endast samla alla negativa tal för sig. Använd inte en extra array, problemet kan lösas ändå. kan lösas ändå. 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!
12 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.
Implementera en tolk till språket Brainf**k. Detaljer om hur språket fungerar finns på Kattis samt på wikipedia .