Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

Relevanta dokument
Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

Användning av datastrukturer Algoritmer och datastrukturer Obligatorisk Laboration nr 1

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektsamlingar i Java

Länkade listor och automatisk testning

Arv och polymorfism i Java

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objektorienterad programmering D2

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Generiska klasser och funktioner

Den som bara har en hammare tror att alla problem är spikar

Programmering för språkteknologer II, HT2014. Rum

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Objektorienterad programmering i Java I

Tentamen Datastrukturer (DAT037)

PROGRAMMERINGSTEKNIK TIN212

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen, EDAA10 Programmering i Java

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Dugga Datastrukturer (DAT036)

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Att skriva till och läsa från terminalfönstret

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4

Tentamen, Algoritmer och datastrukturer

Laboration A Objektsamlingar

E-tentavakt - Invigilator

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

DAT043 Objektorienterad Programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 13 Testning och strängar

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Interfacen Set och Map, hashtabeller

Objektorienterad Programkonstruktion

Uppgift 1 ( Betyg 3 uppgift )

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 14 Innehåll

Tentamen Datastrukturer, DAT037 (DAT036)

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Teoretisk del. Facit Tentamen TDDC (6)

PROGRAMMERING-Java Omtentamina

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

ID1004 Laboration 4, November 2012

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TDDI16: Datastrukturer och algoritmer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540) Ansvarig: Jan Skansholm, tel eller

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Tentamen i Algoritmer & Datastrukturer i Java

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Tentamen i Algoritmer & Datastrukturer i Java

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på layout, ett GUI-baserat program Frågor

Föreläsning 9 Innehåll

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Övning 1 - Abstrakta datatyper

Laboration: Whitebox- och blackboxtesting

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

kl Tentaupplägg

Föreläsning 3-4 Innehåll

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Kursplanering Objektorienterad programmering

I ett program hantera man ofta samlingar av objekt av samma typ.

DAI2 (TIDAL) + I2 (TKIEK)

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

TENTAMEN OOP

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Repetition av OOP- och Javabegrepp

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Samlingar Collection classes

Provlektion Just Stuff B Textbook Just Stuff B Workbook

tentaplugg.nu av studenter för studenter

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Repetition av OOP- och Javabegrepp

Föreläsning 13 Innehåll

Objektorienterad programmering

Objektorienterad Programkonstruktion

Tentamen TEN1 HI

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Länkade strukturer. (del 2)

Transkript:

1 (5) Användning av datastrukturer Algoritmer och datastrukturer Obligarisk nr 1 Syfte Att träna användning av Javas standardbibliotek för datastrukturer och algoritmer. Litteratur Weiss kap. 6, Skansholm 17 Utvecklingsmiljö BlueJ eller eclipse rekommenderas. En kort introduktion till eclipse finns på kurshemsidan. Färdig programkod Given programkod som behövs i uppgifterna finns på kurshemsidan under fliken er. Genomförande och redovisning Uppgifterna är obligariska. Redovisning sker i grupper om två personer inte färre, inte fler. Varje grupp skall självständigt utarbeta sin egen lösning. Samarbete mellan grupperna om övergripande principer är tillåtet, men inte plagiering. Gå till kurshemsidan och vidare till er->hur man använder Fire-systemet. Om du inte registrerat labbgrupp i Fire än: Gör laboration 0.0 innan du fortsätter! Redovisa filerna AngloTrainer.java, WordLists.java med dina lösningar, samt README.txt med allmänna kommentarer om lösningen. Bifoga även källtextfiler med eventuella kompararklasser. Senaste redovisningsdag, se Fire. Kodningsråd Använd om möjligt Javas förenklade for-loop för genomlöpning av datastrukturer. Detta förenklar koden och gör den betydligt mer lättläst än med iterarer, särskilt i uppgift 2.

2 (5) Uppgift 1 Konstruera ett program som låter användaren bilda olika ord ur slumpmässiga bokstavsföljder. Orden skall kontrolleras mot en ordlista. För varje bokstavsföljd skall dessum programmet självt presentera alla möjliga ord i ordlistan som kan bildas ur uppsättningen. En dialog med programmet kan se ut så här (understruken text skrivs av användaren): [dyslectica@elek-1-2-345]$ anglotrainer 21654 words loaded from dictionary.txt The random letters are: byota Try build as many words from these letters as you can! by at bat tab bot Your suggestion was not found in the dictionary. I found at bat bay boa boat boy by oat tab tao y Krav Programmet skall skriva ut en följd S av lika många slumpmässigt valda bokstäver i intervallet a-z som ordlistans längsta ord. Användaren får skriva in förslag på engelska ord som kan bildas enligt reglerna 1. Endast bokstäver i S får användas. 2. Varje bokstavsförekomst i S får användas högst en gång i det bildade ordet. Finns det t.ex. två förekomster av bokstaven t så får det bildade ordet innehålla högst två t. Föreslagna ord som uppfyller 1 och 2 samt finns i ordlistan godkänns och användaren får fortsätta. Användaren skall när som helst kunna avbryta dialogen genom att trycka ctrl-z (ctrl-d i Linux) varvid programmets egna förslag presenteras. Om användaren föreslår ett ord som inte är korrekt bildat enligt reglerna 1 och 2, eller om ordet inte finns i ordlistan, avbryts användardialogen och programmets egna förslag (utan duplikat) presenteras i bokstavsordning. De ord som skrivs ut av programmet skall givetvis uppfylla kraven ovan. OBS! Lämpligt meddelande skall skrivas ut så att användaren får veta varför ett ord underkänns skilj alltså fallet med ett felbildat ord m.a.p. reglerna 1 och 2 från fallet med ett korrekt bildat ord som saknas i ordlistan. Javas klasser och algoritmer skall användas så långt som möjligt. Längden på den egenutvecklade programkoden bör knappast överstiga en A4-sida.

3 (5) Dela in din lösningsalgoritm i lämpliga meder. Komplettera dessum givna medstubbar. För att använda meden includes som beskrivs nedan behöver du kunna sortera tecknen i en sträng. Implementera därför meden private String sort(string s) Tips: uttnytta klassmeden java.util.arrays.sort. Några användbara klasser och algoritmer Nedan följer några klasser och algoritmer som är användbara för att lösa uppgiften. Datastrukturer String Standardklass för stränghantering. HashSet<elementtyp> Generisk oordnad mängd baserad på hash-teknik. TreeSet<elementtyp> Generisk ordnad mängd baserad på binärt sökträd. java.util.random Används för generering av pseudoslumptal. Algoritmer java.util.arrays.sort() Sorteringsfunktion för fält. public boolean includes(string a,string b) Testar inklusionsrelation mellan två strängar. Ej standardmed. Bifogas. Låt #(x,s) = antalet förekomster av tecknet x i strängen s. includes(a,b) returnerar true om, och endast om, för varje tecken x i b, #(x,b) #(x,a); annars false. Ett nödvändigt villkor före anrop av meden är att teckenföljderna i båda strängarna är sorterade lexikografiskt (bokstavsordning). En testmed som demonstrerar includes finns i den givna programkoden. Engelsk ordlista En liten engelsk ordlista finns i filen dictionary.txt, en längre på http://www-01.sil.org/linguistics/wordlists/english/. Programkod Given programkod, ordlista m.m. finns på kursens hemsida. Ett programskelett finns i AngloTrainer.java. Filen innehåller bl.a. meden includes ovan.

4 (5) Uppgift 2 Konstruera ett program som producerar tre olika typer av ordlisr från en textfil. Den första listan skall vara en alfabetisk förteckning över alla ord som förekommer i filen. Vid varje ord skall skrivas ut hur många förekomster som hittades i texten. I nästa lista skall orden (utan duplikat) skrivas ut i baklängesordning (se nedan) 1. Den tredje listan skall gruppera orden efter avtagande frekvens. Inom varje frekvensgrupp skall orden ordnas alfabetiskt. De tre lisrna skall skrivas ut i var sin textfil. Exempel Om man ger följande avsnitt ur filen provtext.txt som indata till programmet provtext.txt The way teach Java as a first programming language is still uncharted. Those of us who have gone through a change of first programming language more than once know that the one guiding beacon is not assume that the pattern of teaching a new language will follow that of the old. Java is no exception this rule. så skall utdatafilerna (avkortat) innehålla: Alfabetisk ordlista Baklängesordlista Frekvensordlista alfasorted.txt a 3 as 1 assume 1 beacon 1 change 1 exception 1 first 2 follow 1 gone 1 guiding 1 have 1 is 3 java 2 know 1 language 3 backwardssorted.txt a java uncharted old once language change the rule assume one gone more those have of guiding teaching programming frequencysorted.txt Några användbara standardklasser Javas standardklasser för mängder och mappar är användbara för att lösa problemet. Några tips: Eftersom Set och Map är generiska finns inget som hindrar att mängder kan vara element i mappar och tvärm. 4: 3: 2: of the a is language that first java programming 1: as assume beacon change exception 1 Det är inte så konstigt som det låter, det finns faktiskt en officiell svensk baklängesordlista.

5 (5) Frekvensordlistan skall sorteras efter avtagande frekvenser. Utnyttja att TreeMap har en konstrukr som tar ett objekt av typen Comparar som parameter. Definiera en lämplig subklass till den och utnyttja möjligheten att jämföra som du vill! Mederna keyset, values och entryset är användbara vid iterering i mappar. Programkod Given programkod m.m. finns på kursens hemsida. Ett programskelett finns i WordLists.java. Filen innehåller bl.a. en färdig med för inläsning av ord. Exempeltext En kort engelsk text finns i filen provtext.txt. Lycka till!