Programmeerimine MTAT 03 100 4 ainepunkti Eksam http

  • Slides: 25
Download presentation
Programmeerimine MTAT. 03. 100. 4 ainepunkti. Eksam. http: //www. cs. ut. ee/~kiho/progr/fall 05 http:

Programmeerimine MTAT. 03. 100. 4 ainepunkti. Eksam. http: //www. cs. ut. ee/~kiho/progr/fall 05 http: //www. ut. ee/~eno/prog 05 Loeng (16 tundi) lektor: Eno Tõnisson Tahvlipraktikum (32 tundi) Arvutipraktikum (32 tundi) Iseseisev töö (80 tundi) J. Kiho. Java programmeerimise aabits. TÜ, 2002, 265 lk. J. Kiho. Väike Java leksikon. TÜ, 2002, 39 lk. I. Meho jt. Programmeerimise praktikumid. TÜ, 2003, 44 lk. Eesmärgid: • esmase programmeerimisoskuse saavutamine • programmeerimiskeele Java põhimõistete omandamine 12/15/2021 1

Eksamitööle pääsemiseks tuleb • läbida arvutipraktikumis kohustuslikud klassid 1 -6, 8 ja 11. (sh.

Eksamitööle pääsemiseks tuleb • läbida arvutipraktikumis kohustuslikud klassid 1 -6, 8 ja 11. (sh. kontrolltöö pärast 4. klassi) • sooritada tahvlipraktikumi kontrolltöö (üle 50%) Eksami koondhindes võetakse arvesse arvutipraktikumis läbitud kuni viie vabatahtliku klassi eest saadud punktid (igaüks 4 punkti, kokku kuni 20 punkti). Täpsemalt vt. Web. CT-s Kursuse info või http: //www. ut. ee/~eno/Info 2005. html 12/15/2021 2

Maksimaalne hinne eksamitöö eest: 40 punkti. Eksami arvuline koondhinne = 40 + + eksamitöö

Maksimaalne hinne eksamitöö eest: 40 punkti. Eksami arvuline koondhinne = 40 + + eksamitöö hinne + + (meistriklasside punktisumma) × (eksamitöö hinne/40) Seega punkte maksimaalselt: 100 = 40 + 20 Näiteid. Eksamitöö 27 punkti, meistriklasse 3 (st. summa 12): 40 + 27 + 12 ×(27/40) = 75 (C). Sama, aga kehv eksam (10): 40 + 12 ×(10/40) = 53 (E). Sama, aga supereksam (40): 40 + 12 = 92 (A) 3

Eksami arvuline hinne 100 – 91 12/15/2021 Eksami täheline hinne A (suurepärane) 90 –

Eksami arvuline hinne 100 – 91 12/15/2021 Eksami täheline hinne A (suurepärane) 90 – 81 B (väga hea) 80 – 71 C (hea) 70 – 61 D (rahuldav) 60 – 51 E (kasin) 50 – 40 F (puudulik) 4

Loenguplaan Arvuti ja programm • Arvuti mõiste • Lähtetekstist lahendamiseni • Programmeerimiskeel Java •

Loenguplaan Arvuti ja programm • Arvuti mõiste • Lähtetekstist lahendamiseni • Programmeerimiskeel Java • Java-programmi üldine struktuur • Näiteprogramm Tarkvara arendamise etapid Näide (numeroloogia tarkvara) 12/15/2021 5

Arvuti ja programm Välismälu ja -seadmed Sisemälu Kõvaketas Diskett Programmi masinkood Andmed Failid Kuvar

Arvuti ja programm Välismälu ja -seadmed Sisemälu Kõvaketas Diskett Programmi masinkood Andmed Failid Kuvar Printer Käsk Protsessor 12/15/2021 Klaviatuur Hiir 6

Lähtetekstist lahendamiseni Vajalikud vahendid (valmisprogrammid): tekstitoimeti kompilaator Programmi lähtetekst mingis programmeerimiskeeles tipitakse tekstitoimeti abil

Lähtetekstist lahendamiseni Vajalikud vahendid (valmisprogrammid): tekstitoimeti kompilaator Programmi lähtetekst mingis programmeerimiskeeles tipitakse tekstitoimeti abil ja salvestatakse faili, näiteks nimega X. Rakendatakse (käivitatakse) kompilaator, andes ette faili X. Kui kompilaator leidis vigu, siis parandatakse fail X tekstitoimeti abil ja kompileeritakse uuesti. Kui kompilaator ei leidnud vigu, siis on kompileerimise tulemuseks täidetav arvutiprogramm, näiteks failis Y. 12/15/2021 7 Rakendatakse (käivitatakse) programm Y.

Programmi teksti sisestamine/muutmine Tekstitoimeti teeb X Programmi lähtetekst (lähtekood) loeb Kompilaator teeb [ Veateated

Programmi teksti sisestamine/muutmine Tekstitoimeti teeb X Programmi lähtetekst (lähtekood) loeb Kompilaator teeb [ Veateated (konsoolil) ] 12/15/2021 Y Täidetav arvutiprogramm 8

Programmeerimiskeel Grammatika: reeglistik - mida ja kuidas võib kirjutada. Kompilaator: programm, mis iga sellele

Programmeerimiskeel Grammatika: reeglistik - mida ja kuidas võib kirjutada. Kompilaator: programm, mis iga sellele grammatikale vastava teksti teisendab täidetavaks arvutiprogrammiks. Programmeerimiskeelset teksti (programmi lähteteksti) loevad nii inimene kui ka kompilaator. Täidetav arvutiprogramm võib olla nii masinkoodis kui ka interpreteeritav. Esimesel juhul täidab programmi vahetult arvuti protsessor. Interpreteeritav programm on sisendiks interpretaatorile - masinkoodis programmile, mis ise korraldab sisendilt saadud programmis olevate käskluste 12/15/2021 täitmise. 9

Programmeerimiskeel Java Üks uuemaid ja populaarsemaid. failinimi. java Kompilaatori nimi: javac Interpretaatori nimi: java

Programmeerimiskeel Java Üks uuemaid ja populaarsemaid. failinimi. java Kompilaatori nimi: javac Interpretaatori nimi: java Kompilaatori käivitamine: javac failinimi. java [veateated] Java lähtetekst loeb class klassinimi{. . . } teeb klassinimi. class Interpretaatori käivitamine: loeb java klassinimi [baitkood] teeb Tulemused ekraanil (konsoolil) 12/15/2021 10

Java-programmi üldine struktuur Põhiüksus: klass (enamasti omaette fail) Java-programm: klasside kogum Klass: väljade ja

Java-programmi üldine struktuur Põhiüksus: klass (enamasti omaette fail) Java-programm: klasside kogum Klass: väljade ja meetodite kogum (ka tühi) Väli: võimalike (meetodiväliste) andmete koht Meetod: mingi (alam)ülesande lahendamise eeskiri Klassi. Nimi väli 1 väli 2. . . meetod 1( ) meetod 2( ). . . class Klassi. Nimi{ int väli 1; double väli 2; . . . double meetod 1(int x){. . . }//meetod 1. . . 11 }//Klassi. Nimi

Peaklass - klass, mis sisaldab peameetodit. Peameetod -meetod nimega main. public static void main(String[

Peaklass - klass, mis sisaldab peameetodit. Peameetod -meetod nimega main. public static void main(String[ ] arg) {. . . } Sellest algab Java-programmi täitmine: nt. käsurealt antava käskluse java Proov korral käivitatakse meetod main( ) klassist Proov. Kui klassis Proov pole peameetodit, siis on tegemist veaga (Exception in thread “main” java. lang. No. Such. Method. Error: main). 12/15/2021 12

Programmi (peaklassi) struktuur. Teksti väljastamine class Proov 1{ // peameetod: public static void main(String[]

Programmi (peaklassi) struktuur. Teksti väljastamine class Proov 1{ // peameetod: public static void main(String[] args){ System. out. println("Proov 1: algus ====="); System. out. println("Proov 1: valmis. ====="); } } main method – peameetod kohustuslik iseseisvat rakendust kirjeldavas klassis 12/15/2021 Looksulud paaris!!! 13

Muutuja • Muutuja – teatavat tüüpi väärtuste jaoks ettenähtud mäluväli • muutujale saab omistada

Muutuja • Muutuja – teatavat tüüpi väärtuste jaoks ettenähtud mäluväli • muutujale saab omistada väärtust ning seda väärtust kasutada avaldise arvutamisel • muutujale viidatakse tema nime abil 12/15/2021 14

Täisarvuline muutuja. Kirjeldamine. • teatavat tüüpi väärtused – nt. täisarvud • • byte short

Täisarvuline muutuja. Kirjeldamine. • teatavat tüüpi väärtused – nt. täisarvud • • byte short int long 8 bitti -128 127 16 bitti -32768 32767 32 bitti -2147483648 2147483647 64 bitti • muutujakirjeldus reserveerib koha antud tüüpi ja antud nimega muutujale (ja salvestab antud kohale antud tüübi vaike-algväärtuse) int a; int a, b, autode_arv; 12/15/2021 15

Omistamine. • a = 12; • b = a + 10; • Kirjeldamine ja

Omistamine. • a = 12; • b = a + 10; • Kirjeldamine ja omistamine koos int koht = 8; 12/15/2021 16

Täisarvuline avaldis. • • • liitmine + lahutamine korrutamine * jagamine / jäägi leidmine

Täisarvuline avaldis. • • • liitmine + lahutamine korrutamine * jagamine / jäägi leidmine % 12/15/2021 17

Tehete järjekord 1. unaarne + unaarne – 2. * (korrutamine), / (jagamine), % (jääk)

Tehete järjekord 1. unaarne + unaarne – 2. * (korrutamine), / (jagamine), % (jääk) 3. + (liitmine), - (lahutamine), + (sõnede sidurdamine) 4. = omistamine • saab sulgudega muuta 12/15/2021 18

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”) Valdkonna analüüs Süsteemianalüüs Ülesande täpne püstitus Nõuete analüüs

Tarkvara arendamise etapid Klassikaline elutsükkel (“kosk-mudel”) Valdkonna analüüs Süsteemianalüüs Ülesande täpne püstitus Nõuete analüüs Disain. Klassid Kavandamine Kodeerimine Algoritmid Programmitekstid Testimine Hooldus 12/15/2021 19

Numeroloogia tarkvara Süsteemianalüüs • õnneliku arvu mõiste • ülesanne: leida õnnelikke arve; kontrollida, kas

Numeroloogia tarkvara Süsteemianalüüs • õnneliku arvu mõiste • ülesanne: leida õnnelikke arve; kontrollida, kas arv on õnnelik • leidub inimesi, keda huvitab arvude õnnelikkust uurida 12/15/2021 20

Nõuete analüüs: mida täpselt teha • vaadeldakse ainult mittenegatiivseid arve • suurim arv ei

Nõuete analüüs: mida täpselt teha • vaadeldakse ainult mittenegatiivseid arve • suurim arv ei ületa miljardit • ülesanne: leida ja väljastada konsoolile kõik õnnelikud arvud, mis asuvad antud lõigul • kui lõik on tühi, siis ei väljastata midagi • kasutajaliides (kasutamine): ainult väljastamine konsoolile • testiplaan: kontrollida (1) väikeste ja (2) suurte ja (3) mõnede vahepealsete arvude korral, (4) väikese ja (5) tühja lõigu korral 12/15/2021 21

Kavandamine Alamülesanded • kontrollida, kas arv koosneb paaritutest numbritest • leida arvu ristsumma •

Kavandamine Alamülesanded • kontrollida, kas arv koosneb paaritutest numbritest • leida arvu ristsumma • leida arvu ristkorrutis • kontrollida, kas arv on õnnelik Arhitektuur üks klass: sisaldab alamülesannete lahendamise meetodeid teine klass: meetod antud lõigul olevate õnnelike arvude leidmiseks 12/15/2021 22

Mudel Peaklass Onnelike. Otsing algus lõpp main( ) 12/15/2021 Numeroloogia meetodite klass Arvud ristsumma(

Mudel Peaklass Onnelike. Otsing algus lõpp main( ) 12/15/2021 Numeroloogia meetodite klass Arvud ristsumma( ) ristkorrutis( ) onÕnnelik( ) koosneb. Paaritutest( ) 23

Meetodite rakendamise skeem Onnelike. Otsing. main( ): iga arvu korral lõigul algus. . .

Meetodite rakendamise skeem Onnelike. Otsing. main( ): iga arvu korral lõigul algus. . . lõpp kontrollida, kas see arv on õnnelik. Kui on, siis teatada (väljastada see arv). Õnnelikkust kontrollib meetod Arvud. onÕnnelik( ), mis omakorda kasutab meetodeid Arvud. ristsumma( ), Arvud. ristkorrutis( ), Arvud. onÕnnelik( ) ja Arvud. koosneb. Paaritutest( ). Onnelike. Otsing. main( ) Arvud. onÕnnelik( ) Arvud. koosneb. Paaritutest( ) Arvud. ristsumma( ) 12/15/2021 Arvud. ristkorrutis( ) 24

Kodeerimine Väärtused võib võtta tüüpi int (maks. > 2 miljardit). Klass Arvud, meetodite välised

Kodeerimine Väärtused võib võtta tüüpi int (maks. > 2 miljardit). Klass Arvud, meetodite välised spetsifikatsioonid: class Arvud static int ristsumma (n) --- Antud: täisarv n, n 0 --- Tulemus: tagastatakse arvu n ristsumma 12/15/2021 25