Seminář 2
Aktualizace
Na semináři bylo pár více či méně nečekaných problémů, tedy pro jistotu doporučuji projít následující věci:
- Video tutoriál k používání Javy v IntelliJ Idea.
- Video tutoriál 1 a 2 k používání Javy v Apache Netbeans.
- Obrázkový návod k používání github classrooms krok za krokem. Díky patří Mgr. Mikulovi. Kroky týkající kódu samotného si nahraďte používáním svého IDE.
- Odkaz na vytvoření repozitáře k domácímu úkolu.
- U ukázky na hodině některým lidem neprocházel test u Hello world kódu. Byl to problém kódování konce řádků, -
\n
v linuxu vs\r\n
ve windows. Toto nemusíte řešit, v dalších úkolech už na to nenarazíte. - V případě problémů se ozvěte.
Plán semináře
- IDE
- Primitivní datové typy
- Operátory
- GitHub classroom
IDE (Integrated development environment)
IDE nabízí spoustu možností, jak si usnadnit práci. Využívejte toho!
- Formátování
- Generování kódu
- Refactoring
- Debugger
- Profiler
- Naštěpávač
- Rady
- Verzování
- Pluginy
I v IDE můžete mít navíc spuštěný JShell pro pokusy…
Datové typy
Zjednodušeně množina přípustných hodnot a operace, které s nimi lze provádět.
Primitivní
boolean
- pravdivostní hodnoty
- literály
true
afalse
char
- znaky (unicode)
- literály v
' '
- escape sequence začínaji \, např.
'\n'
,'\t'
,'\\'
, … - unicode znaky
\uXXXX
, kdeX
je šestnáctková číslice
byte
- celá čísla od -128 do 127 (27)
- nemá literály (přetypování)
short
- celá čísla od -32 768 do 32 767 (215)
- nemá literály (přetypování)
int
- celá čísla od -2 147 483 648 do 2 147 483 647 (231)
- více možnýh soustav (
Y
je libovolná číslice dané soustavy):- dvojková - tvar
0bYYY...
- osmičková - tvar
0YYY...
- desítková - klasika, nesmí začínat 0
- šestnáctková - tvar
0xYYYY
- dvojková - tvar
- literály jsou prostě celá čísla v daném rozsahu
long
- celá čísla od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 (263)
- literály končí znakem L, např
123L
float
- reálná čísla s přesností na 6 číslic
- literály končí znakem F, např
0.25F
double
- reálná čísla s přesností na 15 číslic
- literály:
- prostě desetinná čísla v daném rozsahu
- celé číslo končící znakem D, např
123D
- číslo v exponentovém/vědeckém tvaru, např
3.14159e5
pro 3.14159 ⋅ 105
- navíc
NaN
,POSITIVE_INFINITY
,NEGATIVE_INFINITY
Objektové
Vrátíme se k ním později.
Další
void
- pro definování nic nevracejících funkcí/metod.
Přetypování
Implicitně ze specifičtějšího typu na obecnější, tj např lze uložit
int
dodouble
proměnné nebochar
doint
proměnné. Naopak implicitně nelze.Explicitně když víme něco víc než překladač.
Syntaxe:
(novyTyp) hodnota
.Např
int a = (int) funkceBezneVracejiciDouble(arg1, arg2)
když vím, že zronva s těmito argumenty moje funkce vrátí celé číslo.
Typické použítí je přesné dělení dvou celých čísel operátorem
/
(viz dále) nebo useknutí desetinné části zdouble
hodnoty (pozor na velikost).Literály i práce s typy
byte
ashort
vyžadují přetypování, neboť např(byte) a + (byte) b
je typuint
. Chceme-li zasebyte
, pak musíme použít(byte)((byte) a + (byte) b)
Operátory
Priorita odshora dolů.
A je-li zle tak: “Když nevíš, dej tam závorky.” Tj (skoro) vše se dá uzávorkovat tak, aby člověk určil, v jakém pořadí se mají části výrazu vyhodnocovat.
Unární
Postfixové
++
--
Prefixové
++
--
+
-
!
- negace~
- bitový doplňěk
Binární
Multiplikativní
*
/
%
- zbytek po celočísleném dělení
Aditivní
+
-
Posun
<<
- bitový posun doleva (vyplňuje 0)>>
- bitový posun doprava (vyplňuje znaménkovým bitem)>>>
- bitový posun doprava (vyplňuje 0)
Relační
<
>
<=
>=
instanceof
Relační - (ne)rovnost
==
!=
Bitové
&
- bitové AND^
- bitové XOR|
- bitové OR
Logické
&&
||
Ternární
? :
Přiřazení
=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
>>>=
O něco úplnější tabulka s operátory v Javě.
Úkoly a Github classroom
- Github
- Github desktop nebo git
- Github classroom
- (ukázka)
Widnows a Mac
- Github desktop
Linux
git clone https://...
- programování
git add .
git commit -m ”Moje super řešení funguje tak, že ...”
git push
Anebo existuje port Github Desktop pro linux, ale může být horší nastavování.
Obecně
- Když by se někomu povedlo svůj úkol dokonale rozbít, vždy se dá adresář smazat a začít znovu stažením. Případně máme
git revert
. - Testy neměňte, jsou součástí zadání.
- Dodržujte konvence (názvy, odsazení, …), jen tak může být úkol uznán.
Úkol
Napište funkci
prvocisla
beroucí jeden argument typu int, která vypíše všechna prvočísla menší než zadaný argument oddělená čárkou a mezerou (ve standardním pořadí). Za posledním vypsaným číslem bude taktéž čárka a maezera.Příklad:
prvocisla(10);
vypíše:"2, 3, 5, 7, "
(bez uvozovek).Napište funkci
nasob
beroucí dva argumenty typu int vracející jejich součin, ale používající z aritmetických operací pouze sčítání a odčítání. Mohou se hodit funkce z knihovny Math (vizte dokumentaci).Příklad:
nasob(5,6);
vrátí30
.Napište funkci
ctverec
beroucí jeden argument typu int, která na obrazovku vytiskne čtverec zadané velikost.Příklad:
printSquare(2)
vytiskne--
| |
| |
--Tedy obecně čtverec z mezer velikosti n × n ohraničený znakem - shora a zespoda a znakem | zprava a zleva. Pozor, v levých rozích je mezera pro odsazení a na konci výpisu je nový řádek. Pro neplatná zadání funkce neudělá nic.
Napište funkci
slovo
vracející pro zadané číslo v rozsahu 1 až 10 jemu odpovídající české slovo a pro čísla mimo zadaný rozsah vrátí slovo “neznám”.Příklad:
slovo(3)
vrátí String"tři"
.