Praktikum 1
Teemad
Esmatutvus Javaga. Käivitamine käsurealt. Andmete sisestamine klaviatuurilt.
Pärast selle praktikumi läbimist üliõpilane
- ei karda Javat;
- ei karda kaaslastelt ja õppejõult nõu küsida;
- oskab koostada ja käivitada väga elementaarseid Java programme;
- oskab nimetada mõned olulised erinevused Java ja Pythoni vahel, eriti need, mis teda võivad edaspidi häirida;
- lahendab oma kodused ülesanded iseseisvalt ja on nõus selle nimel ka vaeva nägema;
- tunneb vastupandamatut tahet endale koduarvutisse või sülearvutisse Java installeerida, kui ta seda juba varem teinud pole.
Kompileerimine ja käivitamine käsurealt
Java programm ei ole esialgu tegelikult midagi muud kui lihtsalt üks tavaline tekst, mille võime koostada mõne tekstiredaktoriga (näiteks Notepad, Gedit jne). Erinevalt Pythonist tuleb Java programmi algtekst lisaks salvestamisele ja käivitamisele vahepeal ka kompileerida. Esimeses praktikumis piirdume sihilikult tavalise tekstiredaktori ja käsurearežiimiga. Järgmistes praktikumides kasutame juba mugavamaid töövahendeid, mis aitavad Java programmidega lihtsamalt ümber käia.
Kirjutame Java programmi
Alustuseks loome tekstifaili ja kopeerime sinna alloleva Java koodi.
public class Tere { public static void main(String[] args) { System.out.println("Tere, maailm!"); } }
Windowis
Teeme oma kodukataloogi (arvutiklassis võib olla kodukataloog nimega Z, H, jne.) alamkataloogi oop
. Teeme näiteks Notepadiga tekstifaili, mille salvestame alamkataloogi oop
nime all Tere.java
. Teksti ei pea ise sisse toksima, vaid võib kopeerida praktikumimaterjalist.
Linuxis
Linuxi klassis on võimalik tekstiredaktorina kasutada programmi gedit või kate. Otsi start menüüst Applications --> Utilities --> TextEditor (gedit). Kopeeri üleval toodud koodinäide faili. Valmis faili võib salvestada oma kodukataloogi, või veelgi parem, luua kodukataloogi kaust oop ja fail sinna salvestada.
Pangem tähele, et Linuxis ei ole nimega kettaid (nt C:). Selle asemel on kõik kaustad ühtses failipuus, mille algust tähistab kaldkriips /
. Ka kõik kaustanimed on eraldatud kaldkriipsudega (erinevalt Windowsist, mis kasutab langkriipse \). Eristatakse suuri ja väikseid tähti. Faili salvestamise dialoogis peaks olema eraldi nupp kodukataloogi liikumiseks. Hiljem saab faile vaadata valides start menüüst Applications --> Personal Files.
Kompileerimine
Järgmiseks tuleb Tere.java fail kompileerida. Kompileerimise käigus kontrollitakse koodi süntaksit ning tekitatakse uus fail Tere.class, mis on masina poolt käivitatav.
Windowsis
Käsurearežiimi saab kirjutades cmd.exe
kaustas (kus paikneb Tere.java) järgneval joonisel näidatud reale ja vajutades klahvi enter:
Alternatiiv:
Start-nupu ja käsu cmd
abil saab käsurearežiimi. (Windows8-s käsurearežiimi saab järgmiselt: Ava kuva -> hiire parema nupu klikk -> Kõik rakendused -> Käsuviip
või Ekraani alumine vasak nurk -> hiire parema nupu klikk -> Käsuviip
; Windows10-s piisab käsurea avamiseks vastavas kaustas kirjutades failisirvija aadressiribale cmd
ning vajutades ENTER.) Kaustades liikumiseks kasuta käsku cd kausta_nimi
. Näiteks cd oop
(kui on vaja muuta ketast, siis seda saab teha kirjutades ketta nime ja kooloni, nt. Z:
).
Kompileerimiseks tuleks kasutada käsku javac
.
Näide õigesse kausta liikumisest ja kompileerimisest:
C:\Windows>Z: Z:\>cd oop Z:\oop>dir // näidatakse kausta sisu (peaks olema olemas Tere.java) Z:\oop> javac Tere.java
Kui Windowsis ilmub veateade The name specified is not recognized as an internal or external command ...
või Bad command or file name
, siis ei õnnestunud arvutil kompilaatorit javac
käivitada. Sel juhul tuleks käsurealt paika panna otsimistee, andes näiteks käsu
path "C:\Program Files\Java\jdk-9.0.4\bin"
või path "C:\Program Files (x86)\Java\jdk1.8.0_144\bin"
(sõltub konkreetsest arvutist) ja proovida uuesti.
Käsurearežiimis on abiks käsk dir
, samuti üles-alla nooleklahvid ja tabulaator. Proovige!
Linuxis
Linuxi-s käsurearežiimi saab Terminaliga (Konsole). Selle leiab start menüüst Applications --> System --> Terminal (Konsole). Terminalis saab liikuda kaustade vahel ja nendes programme käivitada.
Kausta sisu vaatamiseks tuleb kirjutada käsk ls
ja vajutada enter. Teise kausta liikumiseks tuleb kirjutada cd kausta_nimi
ja vajutada enter. Kausta nime asemel võib ka anda absoluutse asukoha (nt /home/1234/oop
) või ..
(kaks punkti, tähtistab eelnevat kausta) või ~
(tähistab kodukausta). Tühikut sisaldava nime kasutamiseks tuleb panna nimi jutumärkidesse. Eelnevalt käivitatud käsu kordamiseks saab kasutada üles ja alla nooli ja vajutada enter. Loe lähemalt.
Koodi kompileerimiseks tuleb liikuda kausta, kus Tere.java fail asub ja kasutada käsku javac
. Eduka kompileerimise tulemusena luuakse uus fail Tere.class, mida hakkame hiljem kasutama.
~ $ cd oop
~/oop $ ls
Tere.java
~/oop $ javac Tere.java
~/oop $ ls
Tere.class Tere.java
Kui kompileerimine õnnestub, siis kompilaator mingeid teateid ei anna ja pärast töö lõppu ilmub uuesti käsuviip >
. Kataloogi tekib fail Tere.class
. See class-fail tekibki kompileerimise tulemusena. Edaspidiseks arvutiga kasutamiseks ongi just seda faili vaja. Samas on see fail aga inimesele suhteliselt loetamatu. Kui kompilaator leiab programmi tekstis vigu, siis kuvab ta ekraanile vastavad teated.
Tere.class failist saab natukene arusaadavama kuju käsuga javap -c Tere.class
. JVM keeltest saab ülevaate siit, aga see väljub meie kursuse teemadest.
Java programmi käivitamine
Programmi käivitamiseks tuleb samas kataloogis, kus asub Tere.class anda käsurealt käsk (sama nii Windowsis kui ka Linuxis):
> java Tere
Tulemusena väljastatakse "Tere, maailm!"
Kui tekkis veateade Exception in thread "main" java.lang.NoClassDefFoundError: Tere
, siis interpretaator ei leidnud vajalikku class-faili. Kontrolli, et javac käsk sai ilma vigadeta täidetud ja Tere.class fail on kettal olemas. Järgmiseks kontrolli, et sa oled käsureal õiges kohas - seal kus mainitud Tere.class fail asub. Kui veateade ikka tekib, siis sisestage käsurealt
set classpath=
ja proovige uuesti.
Esimene Java programm
Analüüsime veidi seda programmi, mis on Pythoni analoogilisest programmist mõnevõrra erinev. Toome mõned punktid, mida tuleb silmas pidada. (Mõned alltoodud punktid on natuke lihtsustatult toodud, aga esialgu ei ole ehk kogu nüansirikkust vajagi.)
public class Tere { public static void main(String[] args) { System.out.println("Tere, maailm!"); } }
Klass
Javas peab kogu programmitekst olema esitatud klassidena. Üks programm võib koosneda (ja väga sageli koosnebki) mitmest klassist. Täna ajame küll üheklassiliste programmidega läbi. Klassi nimi pannakse paika võtmesõna class
järel. Siit saab ka class-fail oma nime. (Kui näiteks eeltoodud faili korral oleks failinimi olnud nt. Ilves.java, siis oleks ikkagi kompileerimisel tekkinud Tere.class.)
Looksulud { }
Javas on programmi liigendamiseks looksulud (loogelised sulud). Taanete kasutamine ei ole otseselt kohustuslik, aga on väga-väga soovitatav. Looksulud esinevad alati paarikaupa ja nende vahel olev programmi osa moodustab ühe terviku — ploki. Programmi osad asuvad sageli üksteise sees, nii võibki konkreetses kohas olla "avatud" hulk looksulgusid. Jälgida tuleb, et kõik algavad looksulud ka õiges kohas "lõpetataks". Meie näites on kõige suurem tervik klass ise, mida alustav looksulg on esimese real ja lõpetav looksulg viimasel real. Teine looksulgudega piiritletud osa on meetod main
.
Semikoolon ;
Javas on direktiivi lõpus (tavaliselt) semikoolon. Meie näites reas
System.out.println("Tere, maailm!");
Peameetod
Klassis võib sisalduda erinevat laadi asju. Antud juhul on siin vaid üks meetod (Pythoni analoog oleks funktsioon). Tegemist on peameetodiga, mille nimi on main. Peameetodit sisaldavat klassi nimetatakse peaklassiks ja seda on võimalik käivitada, kusjuures programmi täitmine algab alati just peameetodist.
public static void main(String[] args) { System.out.println("Tere, maailm!"); }
Võtmesõnad public
ja static
ning tagastustüübi määraja void
on peameetodi korral kohustuslikud. Piiritlejat public
on vaja, et peameetod oleks käituskeskkonnale kättesaadav, piiritleja static
määrab, et tegemist on klassimeetodiga. (Ilma selle piiritlejata oleks tegemist isendimeetodiga, millest räägime nädala-paari pärast.) Kõikide meetodite puhul on vajalik määrata tagastustüüp. Peameetodi puhul on selleks void
— tühitüüp, mida kasutatakse niisuguste meetodite puhul, mis tegelikult väärtust ei tagasta.
Muutujat args
saab kasutada käsurealt argumentide etteandmiseks (põhimõtteliselt võib sellele muutujale ka teise nime anda). Tüüp String[]
näitab, et neid argumente käsitletakse kui sõnede massiivi. (Massiividest räägime järgmises praktikumis.)
Kommentaarid
Programmile saab lisada ka kommentaare — tekstiosa, mida kompileerimisel eiratakse. Pikemad kommentaarid saab piiritleda sümbolipaaridega /*
ja */
. Üherealise kommentaari algust märgib sümbolipaar //
. Nii saab alustada kommentaari ka programmitekstiga realt, nt.
System.out.println("Tere, maailm!"); // väljastatakse ekraanile
Kommentaarid kujul /** ... */
on kasutatavad automaatse dokumentaatori sisendina.
Ülesanne A1
Lisage programmile teist korda direktiiv System.out.println("Tere, maailm!");
Muutke väljastatavat teksti! Kompileerige! Käivitage!
Kustutage esimese System.out.println
lõpust ln
ära. Mis muutub?
Tüübid ja muutujad
Javas (erinevalt Pythonist) peab muutuja ja ka meetodi tagastustüüp olema ilmutatult määratud. Kui tahame näiteks kasutada täisarvutüüpi muutujat a
, saame kirjeldamisel kasutada tüüpi int
:
int a;
Muutujale omistatakse väärtus =
abil.
a = 7;
Kirjeldamise ja väärtuse omistamise saab ka ühendada:
int inimesi = 28;
Javas on mõned algtüübid (algavad väikese tähega):
- täisarvud:
byte
,short
,int
jalong
(vastavalt 8-, 16-, 32- ja 64-bitilised); - ujukomaarvud:
float
jadouble
(vastavalt 32- ja 64-bitilised); - Unicode-sümbolid:
char
(16-bitilised); - tõeväärtused:
boolean
(true
võifalse
).
Sõned ei ole Javas algtüüp, vaid on süsteemse klassi String
isendid. (Nendest pikemalt nädala-paari pärast.) Põhimõtteliselt ongi uute tüüpide (klasside) loomine Javas programmeerimise aluseks.
Tüübid ja meetodid
Lisaks muutujatele peavad olema tüübid määratud ka meetodite korral. Kui meetod ei tagasta väärtust, siis on tagastustüübiks void
(tühitüüp). Kõigil teistel juhtudel aga peab tagastustüüp olema kooskõlas sellega, mis tüüpi väärtuse meetod tagastab. Tagastatakse aga selle avaldise väärtus, mis asub naasmisdirektiivis võtmesõna return
järel. Lisaks peab meetodi päises olema määratud ka parameetrite tüübid. Vaatleme näitena meetodit, mis arvutab kahe reaalarvu aritmeetilise keskmise.
static double aritkeskmine(double arv1, double arv2) { double summa = arv1 + arv2; return summa / 2; }
Selle meetodi sisu saaks teha veel lühemaks - vaid üherealiseks:
return (arv1 + arv2) / 2;
Aga las seal praegu olla ka olemas muutuja summa
.
Ülesanne A2
Püüame nüüd selle meetodi programmi sisse panna. Meetodite järjekord tekstis pole oluline, täitmine algab nagunii peameetodist. Küll aga on oluline, et ühe kirjeldus lõppeks enne, kui järgmine algab.
class Keskmised { static double aritkeskmine(double arv1, double arv2) { double summa = arv1 + arv2; return summa / 2; } public static void main(String[] args) { double a = 1.5; double b = 2.25; double c = aritkeskmine(a, b); System.out.println("Arvude " + a + " ja " + b + " aritmeetiline keskmine on " + c); System.out.println("Arvude 3.4 ja -3.4 aritmeetiline keskmine on " + aritkeskmine(-3.4, 3.4)); } }
Ülesanne P1
Palun nüüd pöörduge esimese paberiloleva ülesande juurde ja lahendage see koos paarilisega paberil.
Lisage peameetodis double c = aritkeskmine(a, b);
rea järele uus rida
System.out.println("Arvude" + a +" ja " + b + " summa on " + summa);
Tingimusdirektiivid
Tingimusdirektiivi üldine kuju Javas on
if (loogiline avaldis) direktiiv1 else direktiiv2
Tingimusdirektiiv algab sõnaga if
, millele järgneb ümarsulgudes loogiline avaldis (avaldis, mille väärtus saab olla kas tõene või väär) ja sellele omakorda direktiiv, mis täidetakse siis, kui avaldis on tõene. Sõnale else
aga järgneb direktiiv, mis täidetakse siis, kui loogiline avaldis on väär. Tingimusdirektiivi else
-osa võib ka üldse puududa. Ühe direktiivi rollis võib olla ka plokk (programmilõik looksulgude {}
vahel).
if (loogiline avaldis) { direktiivid1 } else { direktiivid2 }
Ülesanne A3
Proovige teha mingi lihtne näide, kus on kasutatud if
-lauset.
Lülitidirektiiv
Suurema hulga harude puhul saab kasutada lülitidirektiivi, mille üldkuju on järgmine
switch (avaldis) { case võimalikväärtus1: direktiivid1; break; case võimalikväärtus2: direktiivid2; break; … default: direktiivid juhuks, kui ühtegi ülaltoodud varianti ei kasutata; }
(Kui võtmesõna break
ära jätta mingis harus, siis pärast selle haru täitmist ei hüpata lülitidirektiivist välja, vaid minnakse järgmist vastet leidma.)
Näiteks järgmine programmilõik
int nädalapäev = 4; switch (nädalapäev) { case 1: System.out.println("Esmaspäev"); break; case 2: System.out.println("Teisipäev"); break; case 3: System.out.println("Kolmapäev"); break; case 4: System.out.println("Neljapäev"); break; case 5: System.out.println("Reede"); break; case 6: System.out.println("Laupäev"); break; case 7: System.out.println("Pühapäev"); break; default: System.out.println("Vigane päev"); }
Tsüklidirektiivid Javas
Tsüklite programmeerimiseks on keeles Java mitu erinevat konstruktsiooni: kolmikpäisega tsükkel (for
), eelkontrolliga tsükkel (while
) ja järelkontrolliga tsükkel (do-while
). For
-tsüklil on olemas ka lühem versioon järjest nt. massiivi kõigi elementide poole pöördumiseks, aga seda käsitleme edaspidi.
Ülesanne P2
Palun lugege läbi alltoodud 3 tsüklitüübi kirjeldused ja visandage paberile vastavad plokkskeemid.
Üldtsüklidirektiiv ehk kolmikpäisega tsükkel ehk for
-tsükkel:
for (eeltegevused; jätkamistingimus; sammu järeltegevused) { // käsud, mida tuleb täita niikaua, // kui jätkamistingimus kehtib }
Tüüpiliselt on eeltegevusteks mingitele muutujatele algväärtuste omistamised. Võimalikud eeltegevused on näiteks järgmised.
int i = 0;
Eeltegevused: kirjeldatakse täisarvutüüpi muutuja i
, mis on selle tsükli lokaalne muutuja (st. muutuja i
väärtus ei ole väljaspool tsüklit kasutatav) ja omistatakse sellele algväärtus 0
.
kordaja = 0.5;
Eeltegevused: omistatakse reaalarvutüüpi muutujale kordaja
algväärtus 0.5
. Siin ei ole kordaja
tsükli lokaalne muutuja, vaid eeldatakse, et see muutuja on kirjeldatud juba enne tsükli täitmist (tüüp on double
või float
).
int i = 0, summa = 0;
Eeltegevused: kirjeldatakse täisarvutüüpi tsükli lokaalmuutujad i
ja summa
ning omistatakse neile algväärtused 0
.
Jätkamistingimus tuleb seada nii, et tsüklit täidetaks täpselt vajalik arv kordi. Näiteks kui soovime, et tsüklit täidetaks kolm korda, võib tsükli eeltegevusena omistada mingile lokaalmuutujale (tsükliloendajale) algväärtuseks nulli ja igal sammul liita tsükliloendajale ühe. Pärast tsükli esimest sammu on tsükliloendaja väärtus siis 1, pärast teist sammu 2 ja pärast kolmandat sammu 3. Neljandat sammu me enam lubada ei tohi, seega peaks tsükli lõpetama niipea, kui tsükliloendaja saab võrdseks 3-ga või 3-st suuremaks. Jätkamistingimus on lõpetamistingimuse vastandtingimus, ehk antud juhul võib tsüklit jätkata nii kaua, kui tsükliloendaja on veel väiksem kolmest. Olukorda kirjeldava for
-tsükli päis on järgmine:
for (int i = 0; i < 3; i = i + 1)
Tsükli sammu järeltegevuseks on sageli mingi muutuja väärtuse suurendamine või vähendamine teatud arvu võrra. Näiteks
i = i + 1; j = j + 2; k = k - 1;
Kõiki neid omistamisi saab Java-keeles ka lühemalt kirja panna:
i++; j+=2; k--;
Kirjutame näiteks for-tsükli, mis väljastab ekraanile viis korda teksti Tere!.
for (int i = 0; i < 5; i++) { System.out.println("Tere!"); }
Kui tsükli sisu koosneb ühest käsust, siis võib loogelised sulud ka ära jätta.
Eelkontrolliga tsükkel ehk while
-tsükkel:
while (jätkamistingimus) { // Siia kirjutame käsud, mida tuleb täita niikaua, // kui tsükli päises olev jätkamistingimus kehtib. }
See while
-tsükkel on samaväärne for
-tsükliga, millel puudub nii eeltegevus kui ka sammu järeltegevus, s.o
for ( ; jätkamistingimus; ) { // käsud }
Järelkontrolliga tsükkel ehk do-while
-tsükkel:
do { // Siia kirjutame käsud, mida tuleb täita niikaua, // kui jätkamistingimus kehtib. } while (jätkamistingimus);
Pange tähele, et erinevalt eelkontrolliga tsüklist täidetakse järelkontrolliga tsüklit alati vähemalt üks kord, sest jätkamistingimuse kontroll toimub alles pärast tsükli sisu täitmist.
Ülesanne A4
Kirjutage programm, mis arvutab ning väljastab ekraanile arvude summa arvust 1 kuni arvuni 5, kaasaarvatud. Lahendage kasutades erinevaid tsükleid (tulemuseks peab olema 3 programmi (programmi osa)).
Ülesanne A5
Valige iga ülesande jaoks sobiv tsükkel ja kirjutage vastav programm.
- Väljastage arvud 1st 5ni.
- Looge 2 muutujat: summa ja piir ning liida summale juurde arv 2 seni kuni summa saab suuremaks kui piir.
- Väljastage tsükli abil tekst "Tuletan meelde, et varsti algab loeng!" nii, et olenemata konkreetsest tsükli tingimusest see tekst vähemalt ühe korra väljastatakse.
Ülesanne P3
Pange iga ülesande A5 jaoks paberile kirja, miks valisite just seda tüüpi tsükli.
Ülesanne P4
Palun arutage ja kirjutage paberile, millised on teie esmamuljed Javast. Millised on suurimad erinevused võrreldes Pythoniga? Mida oleks vaja veel üle seletada?
Andmete sisestamine klaviatuurilt
Üsna sageli on vaja, et programm saaks andmeid klaviatuurilt. See on Javas veidi töömahukam kui Pythonis. Vaatleme järgmist näidet:
import java.util.Scanner; class Klaviatuurilt { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("Sisesta täisarv"); int taisarv = scan.nextInt(); System.out.println("Sisesta reaalarv"); double ujukomaArv = scan.nextDouble(); System.out.println("Sisestasid täisarvu: " + taisarv); System.out.println(" ja reaalarvu: " + ujukomaArv); } }
Märgime siin, et esimesel real imporditakse valmisklass, mille abil klaviatuurilt sisselugemist teostada. Importimise käsk peab olema enne klassi definitsiooni. Käsuga
Scanner scan = new Scanner(System.in);
luuakse objekt, mille abil on võimalik klaviatuurilt sisestatud arve lugeda. Täisarvu ja reaalarvu (ujukomaarvu) sisselugemine klaviatuurilt toimub vastavalt meetoditega nextInt()
ja nextDouble()
. Kümnendkoha eraldaja (, või .) sõltub konkreetse arvuti seadetest.
Ülesanne A6
Koostada programm, mis kontrollib, kas klaviatuurilt sisestatud kolm reaalarvu saavad olla kolmnurga külgedeks.
Ülesanne A7
Koostada programm, mis küsib kasutajalt korduvalt täisarvu ja teeb kindlaks, kas on tegemist paarisarvuga. Programmi töö lõpeb, kui kasutaja sisestab arvu null.
Ülesanne A8
Koostada programm, mis toob ekraanile kilogrammi ja naela vastavustabeli (võtame 1 kg = 2.2 naela, kuigi täpsem oleks 2.20462262185 naela):
Kg Nael 1 2.2 3 6.6 ... 197 433.4 199 437.8
Selleks, et saada ilusat tabelit, tuleb väljundit vormindada. Veerud saab tekitada tabeldusmärgi abil, mis Javas on "\t"
. Näiteks System.out.println("abc"+"\t"+"def");
viib sõne def
uude veergu. Ujukomaarvude vormindamiseks ja väljastamiseks saab kasutada meetodit System.out.printf
. Näiteks System.out.printf("%.1f",1234.45);
määrab väljastatava kuju murdosa pikkuseks 1.
Täiustage programmi nii, et kasutaja käest küsitakse info kilogrammide vahemiku kohta (algus, samm, lõpp).
Ülesanne A9
Koostada programm, mis leiab järgmise summa:
Täiustage programmi nii, et kasutaja käest küsitakse, mitme esimese liikme summa on vaja arvutada.
Raudvara
// raudvara - ... miski põhiline, keskne, jääv. Eesti õigekeelsussõnaraamat ÕS 2013
Selleks, et uutest teadmistest tähtsaim kergemini meelde jääks, koguge endale raudvara (kas siis dokument oma arvutisse, Google Docs, käsitsi kirjutatud leht vms).
Kirjutage oma raudvaralehele kõik see, mis tänases praktikumis kõige olulisem oli! Raudvaralehte hakkame täiendama terve kursuse jooksul! Praktikumi juhendaja kontrollib aeg-ajalt selle sisu.
Arenduskeskkond (IDE)
Alates järgmisest praktikumist hakkame kirjutama koodi mitte Notepadis, vaid spetsiaalselt selleks mõeldud arenduskeskkonnas, mis paljud ülesanded mugavamaks teeb. Siin kursusel soovitame kasutada IntelliJ IDEA keskkonda. Soovi korral on võimalik kasutada ka keskkonda Eclipse.
Lugege kohe praegu IDE juhendite lehelt IntelliJ või Eclipse sissejuhatust. Seejärel proovi ühega neist koostada lihtne "hello world" programm ja see käivitada. Kursuse materjalides on mõlema keskkonna jaoks olemas juhendid koos piltidega. Funktsionaalsuselt on nad võrdväärsed.
Kodune ülesanne!
- Kontrollige, kas teie kodu- või sülearvutis on olemas Java. Vajadusel paigaldage või uuendage.
- Java saate nt. veebilehelt
http://www.oracle.com/technetwork/java/javase/downloads/index.html
. - Sobiv variant võiks olla JDK 10.
- Konkreetses (nt. arvutiklassi) arvutis oleva Java versiooni saab teada, kui käsureale kirjutada
java -version
, kompilaatori versiooni saab teadajavac -version
abil.
- Java saate nt. veebilehelt
- Proovige, kas toimib.
- Kui toimib, siis võiks proovida ka paigaldada keskkonna IntelliJ või Eclipse (kui seda ei ole arvutis olemas).
- IntelliJ saate lehelt
https://www.jetbrains.com/idea/download/
. Sobib Community Edition, aga ut.ee meiliaadressiga saate tasuta ka Ultimate Edition kasutada. - Eclipse'i saate lehelt
http://www.eclipse.org/downloads/
. Sobiv variant võiks olla Eclipse IDE for Java Developers.
- IntelliJ saate lehelt
- Kontrollige, kas Teil on moodle.ut.ee-s juurdepääs Objektorienteeritud programmeerimise kursusele.
- Lõpetage poolelijäänud ülesanded.
- Tehke kodus enne järgmist praktikumi läbi 2. praktikumi materjal.
Mõningaid materjale
Teaduskooli programmeerimise kursus
Soome MOOC Object-Oriented programming with Java
Java Tutorial for Complete Beginners
Objektorienteeritud programmeerimine Java baasil
Easy to Learn Java: Programming Articles, Examples and Tips