- 1*.
- Kirjoita Java ohjelma, joka toimisi seuraavasti:
C:\OMA>java Ika[RET]
Kerron sinulle paljonko täytät tänä vuonna!
Anna syntymävuotesi>1977[RET]
Täytät tänä vuonna 28 vuotta.
- 2*3.
- Kirjoita funktio, joka palauttaa suorakulmaisen kolmion
hypotenuusan pituuden kun parametrina on kateettien
pituus. Kirjoita testipääohjelma. Kirjoita vielä
funktio kolmion_ala, joka laskee vastaavista tiedoista
suorakulmaisen kolmion pinta-alan. Testaa tämäkin
funktio. Muista että funktiot eivät tulosta mitään!
- 4.
- Kirjoita seuraavat funktiot tai aliohjelmat sekä testiohjelma, jolla testataan niiden toimivuus.
- a)
- Funktio int etumerkki(double x, double eps) joka
palauttaa
-1 mikäli x<-eps
0 mikäli -eps<=x<=eps
1 mikäli x>eps
- b)
- Funktio demopisteet jolle viedään opiskelijan tekemien
demopisteiden summa ja demotehtävien maksimimäärä ja
funktio palauttaa sitten Ohjelmointi 2-kurssin
taulukon mukaiset
demopisteet.
- 5*.
- Tutki pöytätestin avulla mitä ovat muuttujien arvot
seuraavassa ohjelmassa kunkin lauseen suorittamisen
jälkeen. Mitä ohjelma tulostaa?
/**
* Mitä ohjelma tulostaa??
* @author Vesa Lappalainen
* @version 1.0, 19.01.2003
*/
public class Alisotk2 {
private static int i(StringBuffer s) {
return Integer.parseInt(s.toString());
}
private static void set(StringBuffer s,int i) {
s.delete(0, s.length()).append(""+i);
}
/* 01 */ private static StringBuffer b; private static int c;
/* 02 */
/* 03 */ private static void s_1(StringBuffer a, int b)
/* 04 */ {
/* 05 */ int d;
/* 06 */ d = i(a);
/* 07 */ c = b + 3;
/* 08 */ b = d - 1;
/* 09 */ set(a,c - 5);
/* 10 */ }
/* 11 */
/* 12 */ private static void a_2(int a, StringBuffer b)
/* 13 */ {
/* 14 */ c = a + i(b);
/* 15 */ { int c; c = i(b);
/* 16 */ a = 8 * c; }
/* 17 */ set(b,175);
/* 18 */ }
/* 19 */
/* 20 */ public static void main(String[] args) {
/* 21 */ StringBuffer a = new StringBuffer("4"); int d=9;
/* 22 */ System.out.println("" + a + " " + b + " " + c + " " + d);
/* 23 */ b=new StringBuffer("3"); c=2; d=1;
/* 24 */ s_1(b,c);
/* 25 */ a_2(d,a);
/* 26 */ s_1(a,3+d);
/* 27 */ System.out.println("" + a + " " + b + " " + c + " " + d);
/* 28 */ }
}
- 6.
- Mitä ovat muuttujien arvot seuraavien ohjelmanpätkien
jälkeen? Sisennä (ja selvennä) ohjelmanpätkät "oikein"!
/* 1 */ a=4; b=2; c=0; /* 2 */ a=4; b=2; c=0;
if ( a-b != 0 ) c++; a=1; if ( c != 0 )
b=3; c--; else b=1;
a = b-2;
/* 3 */ a=4; b=2; c=0; /* 4 */ a=4; b=2; c=0;
if ( a > 0 ) if ( b > 1 ) if ( c++ != 0 ) if ( a-- != 0);
c=9; else b-=3; else c+=8;
else if ( c == 1 ) ;
else b = 0;
a = 3;
- 7*8.
- Kirjoita luokka Henkilo, jossa on sukunimi, etunimi ja
syntymävuosi. Kirjoita metodi kysy, joka kysyy
henkilön tiedot. Kirjoita metodi tulosta, joka
tulostaa henkilön tiedot (ks.
monisteen luku 9.2). Kirjoita myös
testipääohjelma.
- G1-4
- Katso Demo 3:n guru-tehtävässä
G1-2 käsiteltyä tiedostoa users.html ja tiedostoa
files.txt.
Kirjoita ohjelma, joka tarkistaa jokaiselta henkilöltä
että hänellä on kussakin vastaustiedostossaan ainakin
oma nimensä. Jos nimeä ei ole, files.txt:tä ei ole tai
files.txt:ssä mainittua tiedostoa ei ole, henkilölle
lähetetään sähköposti, jossa mainitaan asiasta. Sähköposti lähetetään tekemällä Unix-konetta varten seuraavanlainen komentojono postita:
#!/bin/sh
mailx -s Demo1 vesal@cc.jyu.fi <<EOF
Tiedostossa kavely.txt ei ole nimeäsi.
Tiedostoa guru2.cpp ei löydy.
EOF
mailx -s Demo1 mattim@cc.jyu.fi <<EOF
Tiedostoa files.txt ei löydy.
EOF
mailx -s Demo1 teppot@cc.jyu.fi <<EOF
Tiedostoa t9.cpp ei löydy.
EOF
-
- postita ajettaisiin (siis demossa ei tarvitse ajaa)
sitten sopivassa Unix/Linux koneessa. Jos Linuxissa ei
ole komentoa mailx voidaan vaikka tehdä alias.
-
- Myöskään WWW:stä ei tarvitse osata lukea, vaan riittää
osata lukea normaalista tiedostojärjestelmästä. Jos
users.html on hakemistossa demo1 (esim: Agorassa
n:\kurssit\cpp\demot\demo05\demo1), niin henkilön files.txt on alihakemistossa käyttäjänimi (eli esim. vesal\files.txt). Vastaavasti vastaustiedostot ovat suhteessa tähän hakemistoon. Oletetaan että jos käyttäjän
tunnus on vesal, niin hänen sähköpostiosoitteensa on
vesal@cc.jyu.fi (oikeasti koko postiosoite on käytössä
ja se ehkä tuleekin users.html:ään)
-
- Vinkki: Käytä "hajoita ja hallitse" tekniikkaa. Teet
mm. aliohjelmia joita kutsutaan:
KasitteleKaytaja("vesal",virhetiedosto);
if ( OnkoTiedostossa("kavely.txt","Vesa Lappalainen") ) ...
-
- Lisäideoita katso Demon 3: mallivastauksesta
LueUsers.java.