Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

Podobné dokumenty
Paměť počítače. alg2 1

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Algoritmizace a programování

Racionální čísla, operátory, výrazy, knihovní funkce

5 Přehled operátorů, příkazy, přetypování

Racionální čísla, operátory, výrazy, knihovní funkce

Úvod do programovacích jazyků (Java)

Algoritmizace a programování

Algoritmizace a programování. Terminálový vstup a výstup

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Úvod do programování. Lekce 1

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Algoritmizace a programování

Algoritmizace a programování

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

KTE / ZPE Informační technologie

Algoritmizace a programování

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Zápis programu v jazyce C#

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

9. přednáška - třídy, objekty

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

Programovací jazyk Pascal

Operátory. Základy programování 1 Tomáš Kühr

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Datové typy strana 29

Tato tematika je zpracována v Záznamy přednášek: str

Řídicí struktury. alg3 1

Jazyk C# a platforma.net

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Výrazy, operátory a řídicí struktury

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

3 KTE / ZPE Informační technologie

7. Datové typy v Javě

Část I Výrazy a operátory

Seminář Java II p.1/43

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Programování v jazyce JavaScript

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

PŘETĚŽOVÁNÍ OPERÁTORŮ

Výčtový typ strana 67

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Úvod do programovacích jazyků (Java)

Seminář Java IV p.1/38

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

2. Základy jazyka. Proměnné. Základy jazyka

Algoritmizace a programování

Algoritmizace a programování

Data, výrazy, příkazy

Výrazy, operace, příkazy

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Formátové specifikace formátovací řetězce

Sada 1 - Základy programování

Seminář z IVT Proměnné a operátory. Slovanské gymnázium Olomouc 11. září 2014 Tomáš Kühr

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

KTE / ZPE Informační technologie

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_25 09

Teoretické minimum z PJV

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

8 Třídy, objekty, metody, předávání argumentů metod

Programování v Javě I. Leden 2008

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Opakování programování

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Seznámení s datovými typy a operátory

KTE / ZPE Informační technologie

Programování v Javě I. Únor 2009

Programování v jazyce JavaScript

Úvod do programování - Java

LEKCE 6. Operátory. V této lekci najdete:

Datové typy pro reálná čísla

NPRG030 Programování I, 2016/17 1 / :58:13

DATOVÉ TYPY POKRAČOVÁNÍ

Sada 1 - Základy programování

Textové soubory. alg9 1

Objektově orientované programování

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

NPRG030 Programování I, 2010/11

Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

1. Téma 03 - Rozhodování

Programovací jazyk C++ Hodina 1

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Čísla a číselné soustavy.

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Transkript:

Jak v Javě příkazy, operace a výrazy BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

Literály Konstanty Komentáře Přiřazovací příkaz Typové konverze Příkazy výstupu Formátovaný výstup Příkazy vstupu Výrazy (asociativita, priorita) Výraz versus příkaz Aritmetické, relační, logické Obsah BD6B36PJV 00 2

Literály Přímý zápis hodnoty v programu se nazývá literál int 34 double 25.3 1.2E-3 boolean false true char 'a' '1' '+' long 10000000000000L float 4F, 258.52f Pozor! 4.7 4.7F = 1.9073486345888568E-7 Dalším často potřebným literálem je literál typu String (není to primitivní typ): "abcd" "Nazdar" BD6B36PJV 00 3

Pojmenované konstanty Kromě literálů lze v jazyku Java používat pojmenované konstanty, které se deklarují podobně jako inicializované proměnné, v deklaraci je navíc klíčové slovo final Příklad deklarace konstant: final int MAX = 10000000; final String NAZEV_PREDMETU = Programovaní 1 ; Konvence: Jména konstant píšeme velkými písmeny, mezi slovy podtržítka Konstantě nelze změnit hodnotu přiřazovacím příkazem MAX = 20; // chyba při překladu BD6B36PJV 00 4

Komentáře Slouží pro komentování kódu, nejsou uvažovány při překladu // toto je koncořádkový komentář int a = 10; a = 24; // a=54; // hodnota a je 24 /* toto je začátek víceřádkového komentáře a = 54; - neprovede se // v zakomentovaném kódu může být vnořen tento komentář */... konec komentáře BD6B36PJV 00 5

Komentáře II /* // po smazání /* zbude prázdný komentář d = 7; /**/ --- Přepínací komentář: /* Blok A /*/ Blok B /**/ 1. Blok A zakomentován, B ne 2. po smazání /* blok A platný, B zakomentován. BD6B36PJV 00 6

Komentáře III Generování dokumentace z komentářů pomocí /** /** * * @param args */ public static void main(string[] args) { Generate Javadoc v Run, vytvoření dokumentace Shift F1, dokumtaence název projektu -> Properties, Documenting > "Include Private and Package Private Members", přidání dokumentace Úprava v Tools, Options, editor, code templates, zkratky BD6B36PJV 00 7

každá proměnná má definovaný typ Java zná 8 primitivních datových typů ostatní typy jsou referenční objekty, pole, řetězce,..) Příklad int a; definuje proměnnou typu int Deklarace proměnných lze do ní přiřadit pouze hodnoty typu int a hodnoty užší(tedy hodnoty, které se dají rozšířit na int, tedy byte, short a char lze s ní provádět operace definované pro int Jak spolu souvisí typ int a typ celá čísla?? A0B36PR1 BD6B36PJV - 02 00 8

Deklarace proměnných Proměnné se zavádějí deklaracemi int i; // deklarace proměnné i typu int double x; // deklarace proměnné x typu double Proměnná deklarovaná uvnitř funkce (lokální proměnná) nemá deklarací definovanou hodnotu Použití proměnné s nedefinovanou hodnotou v jazyku Java je chyba při překladu int x, y; x = y + 2;// chyba při překladu, není známa hodnota y Deklaraci proměnné lze doplnit o inicializaci proměnné: int x = 10; // deklarovaná proměnná má hodnotu 10 Deklarací lze zavést několik proměnných stejného typu: int x, z; A0B36PR1 BD6B36PJV - 02 00 9

Jména a konvence balíček - package - jen malá písmena, i několik jmen oddělených tečkou, např: prog1, java.util třída, abstraktní třída, jejich konstruktory, rozhraní - class, abstract class, interface jméno začínající velkým písmenem, např: String, MyFirstClass, Serializable, Comparable Výjimky by měly mít sufix Exception, např: MySpecialException metoda - sloveso začínající malým písmenem, další slovo začíná velkým písmenem, např: setborder, isempty, getnumber proměnné - začínající vždy malým písmenem další slovo začíná velkým písmenem, např: diskriminant, totalcount konstanta - jen velká písmena, jednotlivá slova oddělena podtržítkem, např. MAX_COUNT, RED BD6B36PJV 00 10

Přiřazovací příkaz Slouží pro přiřazení hodnoty proměnné Tvar přiřazovacího příkazu: <proměnná> = <výraz>; Příklad: x = y + z; // proměnné x se přiřadí součet hodnot //proměnných y a z x = x + 1; // hodnota proměnné x se zvětší o 1 Proměnné v jazyku Java lze přiřadit pouze hodnotu jejího typu, jinak ztráta přesnosti či chyba Příklady nedovolených přiřazovacích příkazů: boolean b; int i; double d; b = 1;//Java je jazyk se silnou typovou kontrolou!!! i = 1.4; d = true; BD6B36PJV 00 11

Přiřazovací příkaz II přířazovací operátory zkrácený zápis <proměnná> = <proměnná> <OP> <výraz> ~ <proměnná> <OP>= <výraz> Př.: j += 5; ~ j = j + 5; Přiřazení je výraz!!! Příklad: int x, y; x = 6; // přířazení má hodnotu 6 a lze tedy opět přiřadit!! // asociativita přiřazení je R, zprava y = x = x + 6; //stejné jako y = ( x = ( x + 6 ) ); BD6B36PJV 00 12

Typové konverze Typová konverze je operace, která hodnotu nějakého typu převede na hodnotu jiného typu Typová konverze může být implicitní (vyvolá se automaticky) nebo explicitní (v programu je třeba ji explicitně předepsat) Konverze typu int na double je v jazyku Java implicitní: kde se očekává hodnota typu double, může být uvedena hodnota typu int, která se automaticky převede na hodnotu typu double double x; int i = 1; x = i;// hodnota 1 typu int se automaticky převede // na hodnotu 1.0 typu double - implicitní konverze je bezpečná BD6B36PJV 00 13

Typové konverze II Převod hodnoty typu double na int (odseknutím necelé části) je třeba explicitně předepsat Příklad: double x = 1.2; int i; i = (int)x;// hodnota 1.2 typu double se odseknutím //necelé části převede na hodnotu 1 typu int Explicitní konverze je potenciálně nebezpečná double d = 1E30; int i = (int)d; // i je 2147483647 asi 2E10 long l = 5000000000L; int i = (int)l;// i je 705032704 oříznuté 4 //bajty BD6B36PJV 00 14

Konverze primitivních typů Primitivní typy jsou vzájemně nekompatibilní, ale jejich hodnoty lze převádět. rozšíření přiřazením zúžení přetypováním byte short char znaménko: 0/1 ~ +/- int long float exp mantisa pozor double exp mantisa BD6B36PJV 00 15

Příkazy výstupu I Pro výpis dat na obrazovku se v Javě používá příkaz System.out.println(parametr); // výpis na stdout Data daná parametrem se vypíší na aktuální řádek a přejde se na další řádek Pro výpis dat na aktuální řádek bez přechodu na další řádek lze použít příkaz System.out.print(<parametr>); Příklad výpisu textu, řetězce: System.out.println( Nazdar ); BD6B36PJV 00 16

Příkazy výstupu II Metoda println je přetížena pro všechny primitivní datové typy, pro String a pro všechny objekty n tedy může být typu int, double, float, char,..: System.out.println(n); Primitivní datové typy se zobrazují jako řetězce Lze je spojovat navzájem pomocí operátoru +: System.out.println( hodnota proměnné n = + n); Formátovaný výstup (zohledňující národní zvyklosti jako je desetinná čárka) je realizován metodou printf, např. System.out.printf("Hodnota proměnné i je %15d%n",i); // vypíše obsah proměnné i na 15 míst, předpokládá celé číslo %d, poté odřádkuje %n národní zvyklosti se řídí Locale.setDefault(Locale.ENGLISH); BD6B36PJV 00 17

Druhý program package pr1_3; public class DruhyProgram { public static void main(string[] args) { int x = 10, y; y = x + 20; System.out.println("hodnota proměnné x je "+x); System.out.println("hodnota proměnné y je "+y); } } Program po překladu a spuštění vypíše: hodnota proměnné x je 10 hodnota proměnné y je 30 BD6B36PJV 00 18

Poznámka k příkazu výstupu Co vypíší následující příkazy: příkazy int x = 1, y = 2; int x = 1, y = 2; System.out.println(x + y); System.out.println( součet je + (x + y)); int x = 1, y = 2; System.out.println( součet je + x + y); výstup BD6B36PJV 00 19 3 součet je 3 součet je 12 Příčinou podivného výstupu posledního programu je, že operátor + (a většina dalších) je asociativní zleva, tzn. výraz součet je +x+y se vyhodnotí takto: ( součet je +x)+y

Základy vstupu V dalších příkladech budeme potřebovat příkazy pro vstup číselných dat zadaných na klávesnici poslouží nám třída Scanner import java.util.*; // třída Scanner je v knihovně java.util public class TretiProgram { public static void main(string[] args) { Scanner sc = new Scanner(System.in); int x, y, z; System.out.println("Zadejte dvě celá čísla"); x = sc.nextint(); //nacti celé číslo y = sc.nextint(); z = x + y; System.out.println("Součet čísel:"+x+"+"+y+" = "+z); } } ale co když tam výjimka není celé číslo? BD6B36PJV 00 20

Vstup pomocí třídy Scanner Využití služeb třídy Scanner je třeba deklarovat příkazem import java.util.*; // načte všechny třídy z knihovny java.util Je třeba vytvořit objekt třídy Scanner a napojit jej na standardní vstupní proud: Scanner sc = new Scanner(System.in); Třída Scanner poskytuje tyto služby: sc.nextint() : přečte celé číslo z řádku zadaného klávesnicí (řádek je zakončen klávesou Enter, číslo je zakončeno mezerou nebo Enter) a vrátí je jako funkční hodnotu typu int sc.nextdouble() : přečte číslo z řádku zadaného klávesnicí a vrátí je jako funkční hodnotu typu double, jako oddělovač použijte. nebo čárku v závislosti na definovaném jazyku OS. Lze změnit pomocí před vytvořením Scanneru Locale.setDefault(Locale.ENGLISH); sc.nextline() : přečte zbytek řádku zadaného klávesnicí a vrátí je jako funkční hodnotu typu String BD6B36PJV 00 21

Formátovaný výstup System.out.printf("Cislo Pi = %6.3f %n ", Math.PI); Specifikace formátu Cislo Pi = 3,142 %[$indexparametru][modifikátor][šířka][.přesnost]konverze konverze - povinný parametr typ celé číslo d,o,x - dekadicky, oktalově a hexadecimálně typ double f je desetinný zápis; e,e vědecký s exponentem šířka - počet sázených míst, zarovnání vpravo.přesnost - počet desetinných míst modifikátor - v závislosti na typu konverze určuje další vlastnosti, například pro konverzi f (typ double) symbol + určuje, že má být vždy sázeno znaménko, symbol - určuje zarovnání vlevo, symbol 0 doplnění čísla zleva nulami. %n přechod na další řádek a další (formátování data, měny, ) BD6B36PJV 00 22

Formátovaný výstup public class FormatovanyVystup { public static void main(string[] args) { System.out.printf("Cislo Pi = %6.3f %n", Math.PI); System.out.printf("Cislo Pi = %8.3f %n", Math.PI); System.out.printf("Cislo Pi = %6.5e %n", Math.PI); System.out.printf("Cislo Pi = %6.5g %n", Math.PI); System.out.printf("Cislo Pi = %6d %n", 33); System.out.printf("Cislo Pi = %4d %n", -33); } } Cislo Pi = 3,142 Cislo Pi = 3,142 Cislo Pi = 3.14159e+00 Cislo Pi = 3.1416 Cislo Pi = 33 Cislo Pi = -33 BD6B36PJV 00 23

Výrazy Výraz předepisuje výpočet hodnoty určitého typu, je to struktura obsahující operandy, operátory a závorky Příklad: {sin(3.3) + 18.33 a Výraz může obsahovat: proměnné konstanty volání funkcí binární operátory a unární operátory závorky Pořadí operací předepsaných výrazem je dáno: prioritou operátorů asociativitou operátorů Příklad: výraz pořadí operací zdůvodnění x + y * z x + (y * z) * má vyšší prioritu než + x + y + z (x + y) + z + je asociativní zleva BD6B36PJV 00 24

Výraz versus příkaz Příkaz provádí akci, je zakončen středníkem a=10; a = Math.abs(x); System.out.println( Ahoj světe ); Výraz má určený typ a hodnotu, není zakončen středníkem 23 ~ typ int, hodnota je 23 14+16/2 ~ typ int, hodnota 22 Y=8 ~ typ int, hodnota 8 Výraz versus příkaz: Výraz má typ a hodnotu Přiřazení je výraz a jeho hodnotou je hodnota přiřazená levé straně příkazu Přiřazení se stává příkazem, je-li ukončeno středníkem BD6B36PJV 00 25

Asociativita a priorita operací Binární operace na množině S asociativní, jestliže platí (x * y) * z = x * (y * z),pro každé x, y a z v S. U neasociativních operací je tedy třeba buď důsledně závorkovat, nebo se dohodnout na implicitním pořadí provádění operací pak se někdy mluví o operacích asociativních zleva či asociativních zprava. Priorita binárních operací vyjadřuje v algebře pořadí, v jakém se provádějí binární operace Příklady: Odčítání levě asociativní, výraz 10 5 3 se chápe jako (10 5) 3, Umocňování je asociativní zprava 3 + 5 2 = 28 nebo 3 5 2 = 75??? Přiřazení je asociativní zprava y = y + 8 BD6B36PJV 00 26 wiki

Aritmetické operátory Pro operandy typu int a double budeme požívat tyto aritmetické operátory (seřazeno sestupně podle priority): unární (změna znaménka) binární *, / a % (násobení, dělení a zbytek po dělení) binární + a (sčítání a odčítání) Jsou-li oba operandy stejného typu, výsledek aritmetické operace je téhož typu Jsou-li operandy různého typu, operand typu int se implicitní konverzí převede na hodnotu typu double a výsledkem operace je hodnota typu double Výsledkem dělení operandů typu int je celá část podílu např. 7 / 3 je 2-7 / 3 je -2 Pro zbytek po dělení platí: x % y = x (x / y) * y např: 7 % 3 je 1-7 % 3 je -1 7 % -3 je 1-7 % -3 je -1 BD6B36PJV 00 27

Obdobně pro typ double : 3,8 % 1,6 = 0,6 Aritmetické operátory II speciální inkrementační a dekrementační operátory: ++x, x++, --x, x - i: a: int i = 1, a = 9; a = i++; a = ++i; 1 2 3 9 1 3 a= ++(i++); tak to už neprojde BD6B36PJV 00 28

Relační operátory Hodnoty všech jednoduchých typů jsou uspořádané a lze je porovnávat relačními operátory Budeme používat tyto relační operátory (priorita je menší než priorita aritmetických operátorů): >, <, >=, <= (větší, menší, větší nebo rovno, menší nebo rovno) ==,!= (rovná se, nerovná se) Výsledek relační operace je typu boolean (true, když relace označená operátorem platí, false v opačném případě) Jestliže při porovnávání číselných hodnot jsou operandy různého typu, operand typu int se implicitní konverzí převede na hodnotu typu double int i=10; double x=12.3; boolean b; System.out.println(i==10); // vypíše true System.out.println(i+1==10); b = i>x; // vypíše false // proměnné b se přiřadí false BD6B36PJV 00 29

Logické operátory Logické operátory jsou definovány pro hodnoty typu boolean unární! (negace) binární && resp. & (konjunkce, logický součin) binární resp. (disjunkce, logický součet) x y!x x && y x y false false true false false false true true false true true false false false true true true false true true Negace má stejnou prioritu, jako změna znaménka, logický součin má nižší prioritu než relační operátory Operace && a se vyhodnocují zkráceným způsobem, druhý operand se nevyhodnocuje, když lze výsledek určit již z prvního operandu BD6B36PJV 00 30

Logické operátory II int n = 10; boolean b1 = false, b2 = true; System.out.println(1<=n && n<=20); // vypíše se true System.out.println(b1!b2); // vypíše se false if (y!= 0 && x/y < z) // zkrácené vyhodnocení Pozor:pořadí priorit je & a, && a BD6B36PJV 00 31

Operátory a jejich priorita priorita operátor typ operandu asociativita operace 1 ++ aritmetický P pre/post inkremetace -- aritmetický P pre/post dekrementace - aritmetický P unarní plus/minus ~ celočíselný P bitová inverze! logický P logická negace (typ) libovolný P přetypování 2 *, /,% aritmetický L násobení, dělení, zbytek 3 - aritmetický L odečítání + aritmetický, řetězový L sčítání, zřetězení BD6B36PJV 00 32

Operátory a jejich priorita II priorita operátor typ operandu asociativita operace 4 << celočíselný L posun vlevo 7 & >> celočíselný L posun vpravo >>> celočíselný L posun vpravo s doplňováním nuly <,>, <=, >= aritmetický L porovnání instanceof objekt L test třídy ==,!= primitivní L rovno, nerovno celočíselný nebo logický L bitové nebo logické AND 8 ^ -"- L bitové nebo logické XOR 9 -"- L bitové nebo logické OR BD6B36PJV 00 33

Operátory a jejich priorita III priorita operátor typ operandu asociativita operace 10 && logický L 11 logický L logické AND vyhodnocované zkráceně logické OR vyhodnocované zkráceně 12? : logický P podmíněný operátor 13 =, -=, *=, /=, %=, ==, &=, ^=, = libovolný P přiřazení BD6B36PJV 00 34

Matematické funkce Při číselných výpočtech často potřebujeme matematické funkce jako abs, sin, cos, sqrt (druhá odmocnina), log (přirozený logaritmus) atd. Tyto funkce poskytuje třída Math, nemusí se importovat, je v java.lang import java.util.*; // pro Scanner public class Prepona { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Zadejte délku odvěsen pravoúhlého trojúhelníka"); double x = sc.nextdouble(); double y = sc.nextdouble(); double z = Math.sqrt(x*x+y*y); System.out.println("Délka přepony je "+z); } } BD6B36PJV 00 35

Knihovní třída Math Některé z funkcí poskytovaných třídou Math public static int abs(int a) public static double abs(double a) public static int max(int a, int b) public static double max(double a, double b) public static int min(int a, int b) public static double min(double a, double b) public static double sqrt(double a) public static double sin(double a) public static double random() vrátí pseudonáhodné číslo větší nebo rovno 0.0 a menší než 1.0 Třída poskytuje též dvě konstanty: E a PI BD6B36PJV 00 36

Knihovní třída Math - příklad import java.util.*; public class ObvodKruhu { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("zadejte poloměr kruhu"); double r = sc.nextint(); System.out.println("obvod kruhu je "+2*Math.PI*r); } } BD6B36PJV 00 37

Nekonečno a nečíslo, typ double public class Nekonecno { public static void main(string[] args) { double nula = 0.0; double vysledek = +5.0 / nula; System.out.println(vysledek); if (Double.isInfinite(vysledek) == true) Infinity System.out.println("nekonecno"); nekonecno vysledek = -5.0 / nula; System.out.println(vysledek); -Infinity if (Double.isInfinite(vysledek) == true) System.out.println(" -nekonecno"); -nekonecno System.out.println("MAX = " + Float.MAX_VALUE + ", 2 * MAX = " + (2 * Float.MAX_VALUE)); vysledek = nula / nula; System.out.println(vysledek); if (Double.isNaN(vysledek) == true) System.out.println("neni cislo"); } } NaN neni cislo MAX = 3.4028235E38, 2 * MAX = Infinity BD6B36PJV 00 38