Cieľom cvičení tretieho týždňa je precvičiť si:
Archetyp: jpaz2-archetype-quickstart
Math
(nájdete ich tak, že do Google zadáte Math Java 8
).
mystery
?
Color
. Koľko parametrov ma použitý konštruktor? Akého typu je premenná c
?
SmartTurtle
pridajte metódu, ktorá nastaví náhodnú farbu kresliaceho pera.
SmartTurtle
pridajte metódu concentricCircles
s parametrom radius
, ktorá nakreslí "nekonečnú" postupnosť vnorených sústredných kruhov. "Nekonečnú" znamená, že útvary, ktoré nie je vidieť, už nekreslíme. Prvý (najväčší) kruh nech má polomer určený parametrom radius
. Každý ďalší (vnorený) kruh, nech má polomer, ktorý je 80% z polomeru toho predošlého. Farby kruhov nech sa postupne cyklicky striedajú: červená, modrá, šedá.
ScientificTurtle
rozširujúcu triedu Turtle
s nasledujúcimi metódami:
min
vráti menšie z čísel cislo1
a cislo2
power
vypočíta nk
factorial
vypočíta n!
countDivisors
vráti počet prirodzených deliteľov čísla n
isPrime
vráti, či je číslo n
prvočíslom
countDigits
vráti počet cifier čísla n
hasNonincreasingDigits
- vráti, či cifry čísla tvoria nerastúcu postupnosť. Cifry čísla 44220 tvoria nerastúcu postupnosť, ale čifry čísla 2231 nie (3 je väčšie ako naľavo od neho nachádzajúca sa cifra 2)
containsDigit
- vráti, či zápis čísla n
obsahuje cifru c
gcd
vráti najväčšieho spoločného deliteľa čísel a
a b
(neskôr sa naučíme aj efektívny Euklidov algoritmus)
lcd
vráti najmenší spoločný násobok čísel a
a b
SmartTurtle
metódu snooker
, ktorá bude realizovať nasledovný algoritmus:
this.setRangeStyle(RangeStyle.BOUNCE);
nastaví, aby sa odrážala od hranice kresliaceho plátna
<20, 280)
(predpokladáme štandardnú kresliacu plochu s rozmermi 300 x 300
).
JPAZUtilities.delay(50)
)
ScientificTurtle
pridajte metódu findGreatestDigit
, ktorá vráti najväčšiu cifru v zadanom čísle.
ScientificTurtle
), ktorá pre zadané číslo vráti minimálny počet operácii, ktoré musíme vykonať, aby sme na displeji zobrazili parametrom zadané číslo n
.
Math.pow
je užitočná metóda na vyrátanie mocniny čísla s desatinnou čiarkou. Konkrétne Math.pow(a, b)
vráti ab
. Všimnime si však jej hlavičku:
Keďže exponent je typu double
, túto metódu môžeme použiť aj na vypočítanie neceločíselných mocnín. Príklad: Math.pow(3.5, 0.25)
vypočíta štvrtú odmocninu z čísla 3.5
.
To, že táto metóda pracuje s číslami s desatinnou čiarkou, je tak jej silnou stránkou, ale pri nevhodnom použití aj slabou stránkou. Totiž čísla s desatinnou čiarkou majú limitovanú presnosť.
Príkladom nevhodného použitia tejto metódy je počítanie celých mocnín celých čísel. Vyskúšajte tento kód (napr. v metóde main
triedy Launcher
):
Na doplnenie: 1315 = 51185893014090757
, čo je menej ako maximálna hodnota pre long
9223372036854775807
, t.j. nedôjde tu k pretečeniu (a rozdielnosť hodnôt tak nie je zapríčinená pretečením pri násobení ale limitovanou presnosťou hodnôt typu double
).