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

Podobné dokumenty
Seminář Java IV p.1/38

Algoritmizace a programování

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

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

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

Paměť počítače. alg2 1

Úvod do programovacích jazyků (Java)

Programování v jazyce JavaScript

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

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

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

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

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

Jazyk C# a platforma.net

Datové typy strana 29

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

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

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

Úvod do programování. Lekce 1

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

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

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

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

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

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

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

typová konverze typová inference

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

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

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

7. Datové typy v Javě

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

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Architektury počítačů

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

CZ.1.07/1.5.00/

Programování v jazyce C pro chemiky (C2160) 9. Práce s PDB soubory

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

Sada 1 - Základy programování

Algoritmizace a programování

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

Znalost výčtových typů. Aktivní znalost kombinovaných (zkrácených přiřazení). Znalost bitových operací. Znalost operátoru sekvence.

Programovací jazyk C++ Hodina 1

Zápis programu v jazyce C#

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

Algoritmizace a programování

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

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

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

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

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

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

Úvod do programovacích jazyků (Java)

Programovací jazyk Pascal

Data, výrazy, příkazy

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Datové typy pro reálná čísla

Výrazy, operace, příkazy

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Struktura a architektura počítačů (BI-SAP) 5

KTE / ZPE Informační technologie

Opakování programování

Algoritmizace a programování

6. Příkazy a řídící struktury v Javě

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

NPRG030 Programování I, 2010/11

Příklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1

Architektura počítačů Logické obvody

Architektura počítačů Logické obvody

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

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

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

Teoretické minimum z PJV

přetížení operátorů (o)

Čísla a číselné soustavy.

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

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

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/

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Struktura programu, proměnné, konstanty, výrazy v jazycích C a C#

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Úvod do programování - Java

VZORCE A VÝPOČTY. Autor: Mgr. Dana Kaprálová. Datum (období) tvorby: září, říjen Ročník: sedmý

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

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

Základy jazyka C. Úvod do programování 1 Tomáš Kühr

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Strojový kód. Instrukce počítače

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

Struktura a architektura počítačů (BI-SAP) 6

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

IUJCE Přednáška č. 1. programování v C na vyšší úrovni základy objektově orientovaného programovaní v (C++, C#)

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

LabView jako programovací jazyk II

Základní datové struktury.

Datové struktury a datové typy.

Transkript:

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

Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v C++. Operátor dle počtu parametrů (argumentů) bývá unární (např. minus), binární (např. děleno) nebo ternární (podmíněný výraz). Každý operátor má určen typ svých argumentů nebo může být polymorfní, aplikovatelný na různé typy. Výraz Syntakticky správný řetězec operandů a operátorů s případnými závorkami Operandy jsou: literály (přímo zadané hodnoty, třeba 1.23), proměnné nebo funkční volání. Výraz lze při splnění dalších podmínek vyhodnotit (spočítat) a získat výsledek. Aritmetické Binární (dvouparametrové) aritmetické operátory: + - * / % (zbytek po celočíselném dělení) Operátor dělení / je polymorfní funguje pro celočíselné argumenty (byte, short, int a long) jako celočíselný pro floating-point (float, double) jako obyčejné dělení. Na to je třeba dávat pozor i když dvě (fakticky i typově) celá čísla nejsou dělitelná, jako podíl se nám vrátí vždy celé číslo (typově i hodnotově). Abychom dosáhli desetinného výsledku, musí být aspoň jeden z operandů typově s pohyblivou řádovou čárkou. Lze zařídit např. typovou konverzí ((double)a)/b pro celočíselné proměnné a, b nebo použitím literálu neceločíselného typu, např. double d = 1.0/i Logické Pracují nad logickými (booleovskými) hodnotami, vč. výsledků relačních operací (porovnávání) <, >, ==, apod. 1

Logické součiny Logické součiny (AND) & nepodmíněný součin, vždy se vyhodnotí oba operandy, && podmíněný součin, líné vyhodnocování (lazy evaluation) druhý operand se vyhodnotí, jen nelze-li o výsledku součinu rozhodnout z hodnoty prvního Logické součty, negace Logické součty (OR) nepodmíněný součet, vždy se vyhodnotí oba operandy, podmíněný součet, líné vyhodnocování druhý operand se vyhodnotí, jen nelze-li o výsledku rozhodnout z hodnoty prvního Negace (NOT)! vrátí znegovanou logickou hodnotu argumentu Relační (porovnávací) Uspořádání <,, >=, > lze použít na porovnávání primitivních číselných a znakových hodnot Rovnost ==,!= test na rovnost/nerovnost lze navíc použít na porovnávání primitivních hodnot i objektů Porovnávání objektů Pozor na porovnávání objektů. Operátor == vrací true jen při rovnosti odkazů, tj. jsou-li objekty identické. Rovnost obsahu (tedy "rovnocennost") objektů se zjišťuje voláním metody o1.equals(o2). equals se může podívat "dovnitř" objektů, je-li tak napsaná. Aby to takto fungovalo, musíme ji my sami u našich vlastních typů překrýt (=sami napsat). Blíže viz Porovnávání objektů Porovnávání floating-point čísel Pozor na srovnávání floating-point čísel na rovnost. Je třeba počítat s chybami zaokrouhlení. Místo porovnání na přesnou rovnost raději používejme jistou toleranci. abs(expected-actual) < delta 2

Bitové operace bitový součin & bitový součet bitový exkluzivní součet (XOR) (znak "stříška") ^ bitová negace (bitwise-not) (znak "tilda") ~ obrátí bity argumentu a výsledek vrátí Bitové posuny vlevo << o stanovený počet bitů vpravo >> o stanovený počet bitů s respektováním znaménka vpravo >>> o stanovený počet bitů bez respektování znaménka Operátor podmíněného výrazu? : Formát: booleovskývýraz? hodnotakdyžplatí : hodnotakdyžneplatí Příklad: x < 0? 0 : x (vrátí x pokud je nezáporné, jinak 0) Jediný ternární operátor v Javě, navíc polymorfní. Pracuje nad různými typy 2. a 3. argumentu. Platí-li první operand (má hodnotu true), je výsledkem hodnota druhého operandu jinak je výsledkem hodnota třetího operandu Typ prvního operandu musí být boolean, typy druhého a třetího musí být přiřaditelné do výsledku. Operátory typové konverze (přetypování) Píše se (typ)hodnota, např. (Person)o, kde o byla proměnná deklarovaná jako Object. Pro objektové typy se ve skutečnosti nejedná o žádnou konverzi spojenou se změnou obsahu objektu, nýbrž pouze o potvrzení (běhovou typovou kontrolu), že běhový typ objektu je ten požadovaný např. (viz výše) že o je typu Person. Naproti tomu u primitivních typů se jedná o skutečný převod, tzn. úpravu hodnoty např. int přetypujeme na short a ořeže se tím rozsah. Operátor zřetězení + Plus je rovněž polymorfním operátorem. Chová se jinak pro čísla sčítá a jinak pro řetězce, kde spojuje. 3

Výsledkem je vždy řetězec, ale argumenty mohou být i jiných typů, int i = 1; System.out.println("variable i = " + i); Tento kód je v pořádku, s řetězcovou konstantou se spojí řetězcová podoba dalších argumentů (např. čísla). Pokud je argumentem zřetězení odkaz na objekt o: je-li o == null : použije se řetězec null je-li o!= null : použije se hodnota vrácená metodou o.tostring(), kterou lze překrýt a dosáhnout tak očekávaného řetězcového výstupu Priority operátorů a vytváření výrazů Motto: Pravidla priorit operátorů je dobré znát, ale ještě lepší je závorkovat, aby nedošlo k chybám a každý to přesně pochopil! nejvyšší prioritu má násobení, dělení, nejnižší přiřazení nízkou prioritu má ternární operátor booleovskývýraz? výrazprotrue : výrazprofalse Pozn. Rozhodně NEZNEUŽÍVEJME přiřazení ve smyslu, že jej současně použijeme jako výraz, tzn. pracujeme s jeho hodnotu! Že to vůbec jde, je spíše reziduum převzaté do Javy z C. 4