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ů, -
\nv linuxu vs\r\nve 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
trueafalse
char- znaky (unicode)
- literály v
' ' - escape sequence začínaji \, např.
'\n','\t','\\', … - unicode znaky
\uXXXX, kdeXje š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 (
Yje 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.14159e5pro 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
intdodoubleproměnné nebochardointpromě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 zdoublehodnoty (pozor na velikost).Literály i práce s typy
byteashortvyžadují přetypování, neboť např(byte) a + (byte) bje 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
prvocislaberoucí 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
nasobberoucí 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
ctverecberoucí 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
slovovracejí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".