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

Arv och polymorfism i Java

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

Objektorienterad programmering D2

Länkade listor och automatisk testning

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

Generiska klasser och funktioner

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

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

PROGRAMMERINGSTEKNIK TIN212

Tentamen Datastrukturer (DAT037)

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

OBJEKTORIENTERAD PROGRAMMERING för Z1 (TDA540)

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

Objektorienterad programmering i Java I

Föreläsning 14 Innehåll

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

Laboration A Objektsamlingar

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

DAT043 Objektorienterad Programmering

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

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

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

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

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

Dugga Datastrukturer (DAT036)

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

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

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.

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

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

Tentamen, EDAA10 Programmering i Java

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

Föreläsning 9 Innehåll

Interfacen Set och Map, hashtabeller

Tentamen, Algoritmer och datastrukturer

Laboration 10 - Eclipse

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

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

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

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

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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.

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

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

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

Tentamen, EDAA20/EDA501 Programmering

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

Tentamen i Algoritmer & Datastrukturer i Java

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

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

Tentamen Datastrukturer, DAT037 (DAT036)

Länkade strukturer. (del 2)

Algoritmer. Två gränssnitt

Föreläsning 3-4 Innehåll

PROGRAMMERING-Java Omtentamina

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

Föreläsning 3. Stack

TDDI16: Datastrukturer och algoritmer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Föreläsning 13 Testning och strängar

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Generiska konstruktioner. Kursbokens kapitel 13

Objektorienterad programmering

Uppgift 1 ( Betyg 3 uppgift )

Objektorienterad Programkonstruktion

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

Teoretisk del. Facit Tentamen TDDC (6)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

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

Tentamen i Objektorienterad modellering och design Helsingborg

Övning 1 - Abstrakta datatyper

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Tentamen i Algoritmer & Datastrukturer i Java

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

Programmering A. Johan Eliasson

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

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 jan 2016

Malmö högskola 2007/2008 Teknik och samhälle

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

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 lisr och mängder. 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): > 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 drygt 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/. Placera filen med ordlistan i projektets rotkatalog, om du använder eclipse är det katalogen som innehåller katalogerna src och bin. 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. Efter 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 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. 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 1 Det är inte så konstigt som det låter, det finns faktiskt en officiell svensk baklängesordlista. frequencysorted.txt 4: 3: 2: of the a is language that first java programming 1: as assume beacon change exception

5 (5) subklass till den och utnyttja möjligheten att jämföra som du vill! Ex. Denna jämförare ger vanlig lexikografisk ordning: public class StringComparar implements Comparar<String> { public int compare(string s1,string s2) { return s1.compareto(s2); } } 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!