Tehtävät Ohjelmoinnin perusopetuksen työpajaan syksy 2008 ¶
Tämän materiaalin www-version on: https://trac.cc.jyu.fi/projects/ohj1/wiki/OhjOpetuksenTyopaja
1. Miten materiaali omaan koneeseen ¶
- asenna Eclipse (katso ohjeita vaikka Ohj1-kurssin ohjeista)
- hae Graphics.jar ohjeiden mukaan. (lokaali Graphics.jar)
- hae ComTest.jar https://trac.cc.jyu.fi/projects/comtest ohjeiden kohdan 5 mukaisesti. (pluginit lokaalisti)
2. Grafiikan avulla motivoivampia tehtäviä ¶
2.1 Mitä voidaan tehdä ¶
- yksinkertaisia komentoriviä paremmin motivoivia tehtäviä (video)
- Appletti joka näyttää mitä voidaan saada aikaan
- Appletti joka näyttää miten funktioita voidaan piirtää
2.2 Yksikertainen piirtotehtävä ¶
- tee jollakin tekstieditorilla Graphics-sivun mukainen tiedosto SimpleGraphics.java:
import fi.jyu.mit.graphics.EasyWindow; public class SimpleGraphics { public static void main(String[] args) { EasyWindow window = new EasyWindow(); window.addLine(0,0,100,100); window.addCircle(50,50, 20); window.showWindow(); } }
- käännä em. sivun ohjeiden mukaan ja aja.
- muuta esimerkin kuva sellaiseksi, että se piirtää pienimmän mahdollisen ympyrän ympärille mahtuvan neliön
2.3 Aliohjelman motivoiminen ¶
- Kirjoita seuraava Lumiukot0.java
import fi.jyu.mit.graphics.EasyWindow; /** * Piirretään lumiukkoja "tyhmällä" tavalla * @author vesal * @version 14.9.2008 */ public class Lumiukot0 { /** * @param args */ public static void main(String[] args) { EasyWindow window = new EasyWindow(); window.addCircle(20,80-2*15-20-10,10); window.addCircle(20,80-15-20,15); window.addCircle(20,80,20); window.addCircle(70,90-2*15-20-10,10); window.addCircle(70,90-15-20,15); window.addCircle(70,90,20); window.showWindow(); } }
- käännä ja aja ohjelma.
- kirjoita aliohjelma
public static void lumiukko(EasyWindow window, double x, double y)
ja muuta pääohjelma kutsumaan lumiukko-aliohjelmaa- => parametreista päästään muuttujiin
- lisää sopiva määrä lumiukkoja
- piirrä lumiukolle silmät
2.4 Samat Eclipsessä ¶
- käynnistä Eclipse ja tee sivun ohjeiden 1.4 mukaiset asetukset
- tee uusi projekti ja aja edelliset esimerkit Eclipsessä (ohjeita tarvitaanko???)
2.5 Kuva pyörimään ¶
- lisää lumiukko-ohjelmaan rivi:
new Rotator(window,Axis.Y,5,100);
- tai vaihda pyörittimen tilalle:
window.setTouchPad(true, true); window.setControlButtons(true);
2.6 Esimerkkejä alkupään demotehtävistä ¶
- katso vaikka Ohjelmointi 1-kurssin demo 2:n tehtäviä
- kaikki demot ja vastukset
2.7 Graphicsin dokumentaatio ¶
- katso graphics/ ja lisää "jotakin kivaa" lumiukko-ohjelmaan
3. Testaaminen helpoksi: ComTest ¶
- ComTest on työkalu, jonka avulla testaamisen kynnystä on tarkoitus madaltaa
- samalla se on työkalu jonka ansiosta saadaan Javdoceihin esimerkkejä.
- ComTest video (koko luentovideo hirsipuusta)
- lisää projektiin JUnit:
Projet/Properties/Java Build Path/Add Library/JUnit/JUnit 4 Finish
3.1 Yksinkertaisen funktion testaaminen ¶
- Luo uusi paketti esimerkit ja siirry sinne
- Kirjoita seuraava ohjelma
public class PieninJakaja { //#STATICIMPORT /** * Funktiolla etsitään luvun pienin jakaja * @param n tutkittava luku * @return luvun pienin jakaja. 1 jos luku on alkuluku * @example * <pre name="test"> * pieninJakaja(1) === 1; * pieninJakaja(2) === 1; * pieninJakaja(3) === 1; * pieninJakaja(4) === 2; * pieninJakaja(5) === 1; * pieninJakaja(6) === 2; * </pre> */ public static int pieninJakaja(int n) { for (int i=2; i<=n/2; i++) if ( n % i == 0 ) return i; return 1; } /** * @param args ei käytössä */ public static void main(String[] args) { int n = 25; int jakaja = pieninJakaja(n); System.out.println(jakaja); } }
- Aja ComTest: Hiiren oikea nappi ja ComTest/Generate and Run
- Lisää esimerkkiin testejä. Kokeile myös väärää arvoa.
- Muokkaa aliohjelmaa niin, että se ei turhaan jaa parillisilla luvuilla
- Testaa vieläkö toimii.
- Muuta testin ylärajaksi neliöjuuri luvusta (sen isommilla jako ei voi mennä tasan).
- Kirjoita seuraava ohjelma
public class EsimerkkiComT { //#STATICIMPORT /** * Tutkii montako kertaa merkki löytyy sanasta. Samalla * löytyneiden merkkien kohdalle tulos-jonoon merkitään ko. merkki. * Jos merkki jo on tulos-jonossa, se tulkitaan vääräksi. * @param sana mistä merkkiä etsitään * @param merkki etsittävä kirjain * @param tulos jono johon oikeat merkitään * @return oikeiden merkkien määrä * @example * <pre name="test"> * String sana = "kissa"; * StringBuilder tulos = new StringBuilder("_____"); * tutkiOikeat(sana,'z',tulos) === 0; * tutkiOikeat(sana,'k',tulos) === 1; tulos.toString() === "k____"; * tutkiOikeat(sana,'k',tulos) === 0; tulos.toString() === "k____"; * tutkiOikeat(sana,'a',tulos) === 1; tulos.toString() === "k___a"; * </pre> */ public static int tutkiOikeat(String sana, char merkki, StringBuilder tulos) { int lkm = 0; return lkm; } /** * @param args ei käytössä */ public static void main(String[] args) { String sana = "kissa"; StringBuilder tulos = new StringBuilder("_____"); int lkm = tutkiOikeat(sana,'s',tulos); System.out.printf("Lkm = %d, tilanne = %s%n",lkm,tulos); } }
- Täydennä esimerkit niin että kaikki sanan kirjaimet on kokeiltu.
- Kokeile miten ComTest -testi käyttäytyy.
- Täydennä aliohjelma toimivaksi.
- Lisää uusi funktio suurinLuvuista(int a, int b, int c) aluksi funktio palauttaa 0.
- Kirjoita funktiolle "kattavat" ComTest -testit ja aja testi. Pitäisi tulla punaista.
- Katso test-hakemistosta minkälaisia JUnit -tiedostoja ComTest on generoinut.
- Täydennä funktion koodi toimivaksi ja aja testit.
- Katso esimerkki jossa tehdään taulukkomuotoinen testi
- Katso taulukkotestiesimerkkejä esim: kurssin Ali-paketista ja erityisesti Mjonot.java.
- Katso Ohjelmointi 1-kurssin demojen mallivastukset
4. Marker.exe (vain Windows, Linuxissa toimii kyllä Winen kanssa) ¶
- marker on ohjelma, jolla voita piirtää minkä tahansa ohjelman päällä (video)
- soveltuu erinomaisesti esimerkiksi Eclipsen päällä havainnollistamaan esimerkiksi sitä, miten parametrit menevät aliohelmaan
- hae Marker omaan koneeseesi: Marker.exe ja lue käyttöohjeet
- käynnistä ja kokeile piirtää näytölle. Katso käyttöohjeista pikakomentoja.
Seminaarin PDF.