Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö
Yleistä Tehtävä: Tee Javalla LineBreaker-ohjelma tekstirivin sovittamiseen tekstialueelle riviä katkomalla. Lausekielinen ohjelmointi II -kurssin pakollinen osasuoritus. Työ tehdään yksin. Ideoita voi vaihtaa koodia ei. Henkilökohtaista ohjausta tarjolla mikroluokissa myöhemmin ilmoitettavina aikoina. Sähköpostilla voi edelleen kysyä. Palautus WETOon todennäköisesti ke 2.11.2016. Lue tehtävänanto ja palautusohjeet tarkkaan. Lopullinen tehtävänanto ja esimerkkejä julkaistaan tällä viikolla. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 2
Tekstirivi ja tekstialueen leveys Tekstialueen leveys on vähintään kolme merkkiä. Leveyttä luetaan käyttäjältä niin pitkään kuin se on virheellinen. Testirivi Tekstirivi koostuu osista, jotka on erotettu toisistaan yhdellä välilyönnillä. Esimerkiksi: Testing, testing. One, two, three. Useimmat osat ovat sanoja, mutta osa voi olla myös esimerkiksi sanan ja pisteen yhdistelmä. Rivi ei saa alkaa välilyönnillä tai loppua välilyöntiin eikä välilyönti saa toistua. Rivin pisimmän osan on oltava korkeintaan alueen leveyden mittainen. Myös riviä luetaan käyttäjältä niin pitkään kuin se on virheellinen. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 3
Tekstirivin sovitus Rivi sovitetaan alueelle katkomalla sitä uusiksi riveiksi kunnes alkuperäisen rivin jäljellä oleva osa mahtuu uudelle riville. Katkaisukohta on viimeisen uudelle riville mahtuvan alkuperäisen rivin osan jälkeen. Katkaisukohdassa oleva välilyönti poistetaan, jolloin uusi rivi alkaa heti komentoikkunan vasemmasta reunasta. Kukin uusi rivi täydennetään tarvittaessa tekstialueen levyiseksi lisäämällä välilyöntejä rivin loppuun. Kaikki uudet rivit päätetään jakomerkkiin. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 4
Tekstirivin sovitus Sovitetaan tekstirivi Testing, testing. One, two, three. 11 merkin levyiselle tekstialueelle. Katkaisukohta on alleviivattu. Pystyviiva osoittaa alueen leveyden. Testing, testing. One, two, three. testing. One, two, three. One, two, three. three. Testing, / testing. / One, two, / three. / Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 5
Ohjelman toiminnasta Ohjelma tervehtii käyttäjäänsä tulostamalla kerran merkkijonon Hello! I break lines.. Riviä ja alueen leveyttä luettaessa tulostetaan Enter area width: ja. Merkkijonon sovituksen jälkeen ohjelman käyttäjältä tiedustellaan Continue (y/n)? ja vastaukseksi hyväksytään vain pieni y- tai n-kirjain. Kaksi ensimmäistä syötettä luetaan uudelleen, jos käyttäjä haluaa jatkaa. Virheeseen reagoidaan merkkijonolla Error!. Ohjelman loppuessa tulostetaan See you soon.. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 6
Esimerkki ohjelman toiminnasta Hello! I break lines. Enter area width: 2 Error! Enter area width: 11 Testing,testing. One, two, three. Error! Testing, testing. One, two, three. Error! Testing, testing. One, two, three. Testing, / testing. / One, two, / three. / Continue (y/n)? n See you soon. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 7
Esimerkki ohjelman toiminnasta Hello! I break lines. Enter area width: 15 Q: What did the Java code say to the C code. A: You have got no class. Q: What did the/ Java code say / to the C code. / A: You have got/ no class. / Continue (y/n)? y Enter area width: 25 Unix is user-friendly - it is just choosy about who its friends are. Unix is user-friendly - / it is just choosy about / who its friends are. / Continue (y/n)? n See you soon. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 8
Muuta Taulukot ja Javan API:n edistyneemmät ohjelmointitekniikat on kielletty, jotta noviisit eivät käyttäisi tuntemattomia tekniikoita. API-luokkien operaatioista sallittuja ovat vain System.out.println ja print ja luentokalvoilla mainitut String-luokan operaatiot. Muita APIoperaatioita ei saa käyttää. Lue syötteet In-luokan avulla. Kysy ohjaajalta, jos olet epävarma. Noudata hyvää ohjelmointitapaa. Testaus WETOssa julkisilla ja salaisilla testeillä. Arvostelu: myöhemmin julkaistavalla asteikolla. Hylätyn työn saa korjata. Lausekielinen ohjelmointi II Syksy 2016 Jorma Laurikkala 9