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

Länkade listor och automatisk testning

Objektsamlingar i Java

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

Generiska klasser och funktioner

Arv och polymorfism i Java

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

Objektorienterad programmering D2

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

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

Objektorienterad programmering i Java I

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

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

Föreläsning 13 Testning och strängar

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

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

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.

E-tentavakt - Invigilator

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

Uppgift 1 ( Betyg 3 uppgift )

PROGRAMMERINGSTEKNIK TIN212

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

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

Tentamen, EDAA10 Programmering i Java

Laboration A Objektsamlingar

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

Objektorienterad Programkonstruktion

Provlektion Just Stuff B Textbook Just Stuff B Workbook

Övning 1 - Abstrakta datatyper

Föreläsning 13 Innehåll

Laboration: Whitebox- och blackboxtesting

Dugga Datastrukturer (DAT036)

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

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

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 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

EDAA01 Programmeringsteknik - fördjupningskurs

TDDI16: Datastrukturer och algoritmer

Kursplanering Objektorienterad programmering

Tentamen, Algoritmer och datastrukturer

DAI2 (TIDAL) + I2 (TKIEK)

kl Tentaupplägg

Språkteknologi (SV2122) Föreläsning 3: Programmering i Python

Tentamen Datastrukturer (DAT037)

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

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

Tentamen i Algoritmer & Datastrukturer i Java

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

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

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

Python vecka 41-42: Individuell programmering

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

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

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

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Objektorienterad programmering

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

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.

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

ID1004 Laboration 4, November 2012

DAT043 Objektorienterad Programmering

Anteckningar 1: Grundläggande saker

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

Övning 3 - Tillämpad datalogi 2012

Isolda Purchase - EDI

Introduktionsmöte Innehåll

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

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

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Försättsblad till skriftlig tentamen vid Linköpings Universitet

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

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 14 Innehåll

Interfacen Set och Map, hashtabeller

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

Rekursiva funktioner Algoritmer och datastrukturer Obligatorisk Laboration nr 5

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

HI1024 Programmering, grundkurs TEN

Teoretisk del. Facit Tentamen TDDC (6)

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

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

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

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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

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

Tentamen TEN1 HI

Tentamen Datastrukturer, DAT037 (DAT036)

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

kl Tentaupplägg

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

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! Om du registrerat labbgrupp i Fire: Dokumentet Redovisningsdetaljer beskriver vilka typer av filer du skall skicka in. Andra halvan av Redovisningsproceduren beskriver hur du postar materialet i Fire. Posta samtliga givna filer, uppdaterade med dina lösningar, och README.txt med allmänna kommentarer om lösningen. 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. Lämpligt meddelande skall skrivas ut så att användaren får veta varför ordet underkändes skilj alltså fallet med felbildat ord m.a.p. reglerna 1 och 2 från fallet med korrekt bildat ord som saknas i ordlistan. Javas klasser och algoritmer skall användas så långt som möjligt.

3 (5) Längden på den egenutvecklade programkoden bör ej överstiga en A4-sida. Dela in din lösningsalgoritm i lämpliga meder. Komplettera dessum givna medstubbar. 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. 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); false annars. Ett nödvändigt villkor före anrop av meden är att teckenföljderna i båda strängarna är sorterade i växande följd (bokstavsordning). En testmed som demonstrerar meden finns i den givna programkoden. Engelsk ordlista En liten engelsk ordlista finns i filen dictionary.txt. 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 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! Meden entryset är användbar 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!