Ukeoppgaver 1: 24.?28. aug (INF1000 - H?st 2009)
Et f?rste m?te med Java (kapittel 1 og 2.1?2.3 i l?reboka, "Rett p? Java" 2. utg.)
M?l
I f?rste terminalstue-time skal du greie ? skrive dine f?rste Java-programer
og f? de til ? fungere. P? timene med tavleundervisning (teoritimene)
f?r du mer informasjon om Java og kurset generelt, og gjennomgang
av noen av disse oppgavene.
Oppgaver til teoritimen
- Det f?rste programet: kap. 1, oppg. 1 (side 23 i l?reboken)
Lag et program som skriver f?lgende tekst p? skjermen:
Velg selv hvilket navn du vil gi klassen.Rachmaninovs 3. klaverkonsert har et vakkert ?pningstema
Tips: Fremgangsm?te for ? lage ditt f?rste program:- Innlogging: Du kan bruke din egen datamaskin eller en maskin p? en av
?terminalstuene? p? universitetet. For ? logge inn p? terminalstuen trenger du
bare ? skrive ditt
brukernavn
og passord p? velkomstskjermen til maskinen. Hvis du har med deg en
b?rbar pc til UiO kan du koble den til det tr?dl?se nettet ved UiO (klikk p? teksten hvis du ?nsker mer informasjon).
Hvis du sitter p? en egen pc hjemme sjekk at du har installert en
Java-kompilator f?r du g?r videre ― Mac og Linux kommer som regel med
Java-kompilator, men p? Windows m? du vanligvis installere kompilatoren (PDF) selv.
- Redigering: Deretter starter du et tekstredigerings-program.
Det finnes mange slike ? velge mellom, for eksempel
Emacs (som finnes
p? Linux-maskinene i terminalstuen) eller TextPad (p? Windows-maskinene).
Skriv programmet ditt i redigerings-programmet.
Se f?lgdende eksempel for gode tips til
hvordan du kan bygge opp programmet ditt ― det eneste du trenger ? endre
er teksten som st?r i anf?rselstegn!
Lagre programmet
i en fil med riktig filnavn. Filnavnet skal v?re likt
klassenavnet etterfulgt av .java, f.eks.
f?lgende program (fra side 16 i l?reboken) skal lagres med
filnavnet Utskrift.java fordi klassen i programmet heter
Utskrift.
Husk at store og sm? bokstaver har betydning her.
class Utskrift { public static void main(String[] args) { System.out.println("Beethoven komponerte Skjebnesymfonien"); } }
- Kompilering: Videre bruker du et ?kommandovindu?,
ogs? kalt terminalvindu, for ? kompilere programet.
P? Linux-maskinene p? Ifi ?pnes det automatisk et kommandovindu n?r du
logger inn, men du kan ogs? ?pne det ved ? trykke h?yre musknapp og
velge Open Terminal.
P? Mac finner du ogs? kommandovinduet under navnet ?Terminal?.
P? Windows kan du ?pne kommandovinduet ved ? holde inn Windows-tasten
(tasten til venstre for Alt-tasten) mens du trykker bokstaven r, og s?
skrive cmd (og trykke Enter).
For ? kompilere programmet skriver du p? kommandovinduet kommandoen javac etterfulgt av mellomrom og filnavn, for eksempel:
> javac Utskrift.java
NB! Husk at du ikke skal taste inn ">"-tegnet, dette tegnet kalles prompt og brukes bare for ? angi at det som f?lger er en kommando som skal tastes inn p? kommandovinduet. Promptet du ser p? skjermen avhenger bl.a. av operativsystem, p? Unix (Linux) kan det f.eks. se slik ut: bruker@maskin ~ $
- Debugging:
Hvis kompilatoren oppdager feil i programmet, retter du disse i
tekstredigerings-programmet, lagrer, og kompilerer igjen. Feilmeldingen fra
kompilatoren sier ofte hvor i programmet feilen sannsynligvis ligger, bl.a.
vha. linjenummer. Bruk dette til ? finne feilen, og husk at store og sm?
bokstaver har betydning, b?de i programkoden og filnavnet. Mer info om
kompilering og debugging kan du finne p? side 17-18 i l?reboken, og p?
Terminalvaktenes hjelpesider.
- Kj?ring: N?r du har rettet skrivefeilene slik at kompilatoren ikke
gir noen feilmelding kan du ?kj?re? programmet ved ?
skrive java Klassenavn p? kommandovinduet,
for eksempel:
> java Utskrift
- Innlogging: Du kan bruke din egen datamaskin eller en maskin p? en av
?terminalstuene? p? universitetet. For ? logge inn p? terminalstuen trenger du
bare ? skrive ditt
brukernavn
og passord p? velkomstskjermen til maskinen. Hvis du har med deg en
b?rbar pc til UiO kan du koble den til det tr?dl?se nettet ved UiO (klikk p? teksten hvis du ?nsker mer informasjon).
Hvis du sitter p? en egen pc hjemme sjekk at du har installert en
Java-kompilator f?r du g?r videre ― Mac og Linux kommer som regel med
Java-kompilator, men p? Windows m? du vanligvis installere kompilatoren (PDF) selv.
Finn feilene i dette programmet:
class Utskrift { public stitac void main(String args) ( System.out.println("Beethoven skrev Skjebnesymfonien") System.out.println("og ?tte andre symfonier.); } }
Vi ?nsker ? skrive ut f?lgende tekst p? skjermen (med samme pyramideformatering):
Lag et Java-program som gj?r dette, ved ? bruke flere utskriftssetninger.a a a a b a a c c a a d f d a
Tips:
Idéen her er ? finne hvor og hvordan man kan legge inn mellomroms-tegn i programmet for ? f? til pyramideformateringen. Senere i kurset, i kapittel 3 (side 52) vil du l?re en annen m?te ? l?se denne oppgaven p? hvor Java tar seg av pyramideformateringen.
Skriv et program som beregner arealet av rektanglene med disse sidest?rrelsene: 3 og 5, 7 og 3, samt 4 og 9, og som skriver ut resultatet med en passende fortekst. Kompier og kj?r programmet.
Tips:
Denne kan l?ses ved ? f?lge oppskriften fra programmet p? side 30 og skrive et lignende program, men med litt andre variabelnavn og beregninger.
Finn feilene i dette programmet:
class Volum { public static void main (String[] args) { integer lengde, bredde, h?yde; lengde = 3; volum = lengde * bredde * h?yde; System.out.println("Volumet er: " + volum); } }
Hva betyr f?lgende feilmeldinger, som kompilatoren spytter ut n?r vi pr?ver ? kompilere og debugge dette programmet:
1 class Test { 2 public static void main(String[] args) { 3 int jens; 4 int siv = Jens * 3; 5 System.out.println("Svar: " siv); 6 erna = siv - jens; 7 System.out.printn(erna); 8 }
a. Test.java:8: reached end of file while parsing } ^ b. Test.java:4: cannot find symbol symbol : variable Jens location: class Test int siv = Jens * 3; ^ c. Test.java:4: variable Jens might not have been initialized int siv = Jens * 3; ^ d. Test.java:5: ')' expected System.out.println("Svar: " siv); ^ Test.java:5: illegal start of expression System.out.println("Svar: " siv); ^ e. Test.java:6: cannot find symbol symbol : variable erna location: class Test erna = siv - jens; ^ f. Test.java:7: cannot find symbol symbol : method printn(int) location: class java.io.PrintStream System.out.printn(erna); ^Hvis vi fjerner "{"-kr?llparentesen p? linje 2 f?r vi ca. 10 nye feilmeldinger, bl.a. f?lgende. Hva tipper du er grunnen til at s? mange feilmeldinger for?rsakes av bare denne enkle lille feilen?
g. Test.java:2: ';' expected public static void main(String[] args) ^ Test.java:5: <identifier> expected System.out.println("Svar: " + siv); ^ Test.java:5: illegal start of type System.out.println("Svar: " + siv); ^
Oppgaver til terminaltimen
L?sningsforslag
Du f?r sannsynligvis mest utbytte av l?sningsforslagene hvis du har fors?kt ? l?se oppgavene p? egen h?nd f?rst.Tibakemelding om dette oppgavesettet kan du sende til josek [at] ifi.uio.no