45
1 Úvod do programování - Java Cvičení č.1 UPR 2008/2009 1

Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

1

Úvod do programování - Java

Cvičení č.1

UPR 2008/20091

Page 2: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

2

UPR informace

čí í š á ář• Cvičící RNDr. Eliška Ochodková, kancelář A1010

[email protected]• www.cs.vsb.cz/ochodkovawww.cs.vsb.cz/ochodkova

• Přednášející Ing. Michal Krátký, Ph.D., kancelář A1004

h l k k b

UPR 2008/20092

[email protected]• www.cs.vsb.cz/kratky

Page 3: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

3

Přihlášení

• Osobní číslo• Osobní číslo– Každý uživatel počítačové sítě TUO-Net má automaticky přiděleno

osobní číslo.– Studenti mají toto číslo uvedeno na své čipové kartě a v indexu.

Osobní číslo se skládá ze tří písmen a tří číslic, např.: abc123– Osobní číslo slouží pro identifikaci v počítačových systémech.

• Heslo– Počáteční heslo je uživateli nastaveno jeho rodné číslo (bez lomítka)Počáteční heslo je uživateli nastaveno jeho rodné číslo (bez lomítka)– Uživatel je povinen změnit si heslo co nejdříve– Prvotní heslo opravňuje uživatele k 6 přihlášením– Zapomenuté heslo může nastavit fakultní správce nebo kartové

středisko - požádat musíte osobně - nelze telefonicky či poštou• Autentizace

– Uživatelé se autentizují pomocí adresářové služby eDirectory (Novell):– uživatelské DN: [.]os-cislo.?

UPR 2008/20093

uživatelské DN: [.]os cislo.?– uživatelské jméno: os-cislo– uživatelův kontext: .?, což je poslední číslice jeho osobního čísla– Např. .abc123.3

Page 4: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

4

UPR informace

Zápočet • Zápočet – max 70 bodů, min 36 na základě test, – pevně dané termíny – schopnost on-line implementovat

zadání!!!• Zkouška – test (klasif. zápočet)

– Max 30 bodů, min 15 bodů,

• Opisování NE!!! – Totožné nebo jen mírně modifikované projekty,

neschopnost vysvětlit zdrojový kód apod.– Opisování u zkoušky

Di i li á í k i d í ě é d í ě é

UPR 2008/20094

Disciplinární komise podmíněné nepodmíněné vyloučení ze studia

Page 5: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

5

UPR informace

é á• Instalace (odkazy na webové stránce cvičícího a přednášejícího)– Java J2SE Development Kit 6.0 (stáhnout jdk

(Java Development Kit), ne jen jre (Java R ti E i t))Runtime Environment))

– IDE • Eclipse – na cvičení• NetBeans a další

• Literatura viz webová stránka cvičícího

UPR 2008/20095

• Literatura viz webová stránka cvičícího

Page 6: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

6

Programátorské desatero• Programování je lidská činnost vyžaduje tedy trénink • Programování je lidská činnost, vyžaduje tedy trénink. • Programování není cíl, ale prostředek k dosažení cíle. • Programování vyžaduje pochopení algoritmizovaného problému. • Programátor přemýšlí. • Programátor pracuje samostatně.• Programátor čte, zejména dokumentaci. • Programátor se stále učí nové věci. • Programátor testuje to čemu ještě nerozumí• Programátor testuje to, čemu ještě nerozumí.• Programátor umí improvizovat. • Programátor optimalizuje. • Programátor musí umět přecházet plynule mezi více jazyky. • Programátor umí hledat chyby. • Programátor hledá chyby, aby se poučil. • Programátor umí číst cizí kód. Je to poučné. • Programátor píše slušně

UPR 2008/20096

• Programátor píše slušně. • Programátor si musí poradit s více editory. • Programátor musí umět přečíst kód i bez zvýrazněné syntaxe.

Page 7: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

7

Životní cyklus javovského programu

Soubor AhojSvete java se zdroj kódem• Soubor AhojSvete.java se zdroj. kódem

public class AhojSvete { public static void main(String[] args) {

System.out.println("Ahoj svete!"); }}

}

• Překlad (různé překladače (compilers), např. javac, jikes) z příkazového řádku

javac AhojSvete.java AhojSvete.class (tzv. bytecode)

UPR 2008/20097

bytecode)• Spuštění z příkazového řádku

java AhojSvete

Page 8: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

8

Vývojové prostředí Eclipse

š ě í ř í• Spuštění, vytvoření workspace (pracovního prostředí)– Při prvním spuštění Eclipse jste dotázáni na

umístění tzv. Workspace. Vyberte si Váš í d ář kt é á t ří pracovní adresář, ve kterém se vám vytvoří

workspace (adresář s tímto názvem). Tento workspace bude obsahovat vámi vytvořená data – projekty, adresáře, soubory.

UPR 2008/20098

Page 9: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

9

Vývojové prostředí Eclipse

V t ř í j kt• Vytvoření projektu– Po spuštění se Eclipse otevírá s posledně otevřeným(i)

projektem(y). Chcete-li vytvořit projekt nový, respektive první proveďte následující:

– Po spuštění IDE se nový projekt vytvoří File -> New -> Project, a vybere se varianta Java Project. V průvodci j , y j pdále zadejte jméno projektu (např. cv1) a pak zvolte Finish.

– K vytvoření projektu také můžeme kliknout na ikonu

• Vytvořil se tzv. Java project, projekt, kam se budou ukládat naše soubory se zdrojovými kódy (tj d j é b ) i jí í b

UPR 2008/20099

(tj. zdrojové soubory) a související soubory potřebné k vytvoření programu v Javě.

Page 10: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

10

Vývojové prostředí Eclipse

ř á á í ří• Přidávání tříd– Pokud jste zadali adresář projektu, ve kterém již jsou

soubory .java, Eclipse je zařadí do projektu. Nové třídy se vytváří File > New > Class, je třeba zadat jméno třídy (musí být stejné jako jméno třídy, která pak bude obsahovat metodu main) např AhojSvete Dále na obsahovat metodu main). , např. AhojSvete. Dále na otázku Which method stubs would you like to create?odpovězte zakliknutím položky public static void main… a ukončete volbou Finish.

– K vytvoření třídy také můžeme kliknout na ikonu

• Vytvoří se zdrojový soubor AhojSvete java“ který

UPR 2008/200910

• Vytvoří se zdrojový soubor „AhojSvete.java , který bude obsahovat jedinou třídu „AhojSvete“.

Page 11: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

11

Vývojové prostředí Eclipse

í ř š ě í• Psaní, překlad, spouštění programu– Eclipse obsahuje komfortní editor se syntax

highlighting a automatickým odsazováním. Psaní je tedy víceméně intuitivní. Standardní horká klávesa Ctrl S ukládá soubor horká klávesa Ctrl-S ukládá soubor.

– Překlad se ručně spustí volbou Run->Run as->Java application nebo klikněte na ikonu

– Chyby a výsledky překladu vypisují do spodního okna Console.

UPR 2008/200911

okna Console.

Page 12: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

12

První program/* * File name: AhojSvete.java

* Date: 2007/10/3* Author: Vase Jmeno * Muj prvni program v Jave */

// deklarace hlavni tridy programupublic class AhojSvete {

// definice hlavni metody programu public static void main(String[] args) {

// vypis retezce na obrazovku System.out.println("Ahoj svete!");

}}

UPR 2008/200912

}/* end of AhojSvete.java */

Page 13: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

13

Komentáře

řá// na jeden řádek

/* komentářna více řádků */na více řádků /

/** dokumentační komentář * javadoc vygeneruje dokumentaci

UPR 2008/200913

j g j*/

Page 14: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

14

Konvence

k k ář• Dokumentace, komentáře– Na začátku každé třídy uveďte:

• - stručný popis třídy,- autora či autory,- označení verze (pořadové číslo či datum poslední změny).

– Před každou metodou by měl být její popis doplněný o y ý j j p p p ýpopis významu jednotlivých parametrů a návratových hodnot.

– Popisy tříd a metod by měly být ve formátu vhodném pro javadoc.

– Vlastní kód můžte rovněž doplnit o komentář, zejména pokud jste začátečníci

UPR 2008/200914

pokud jste začátečníci.

Page 15: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

15

Konvence

Id tifikát (J j t iti í j k • Identifikátory (Java je tzv. case senzitivní jazyk – pozor na malá a velká písmena!)

• Třídy – začínají velkým a každé další velkým AhojSvete,

StringBuffer

d ě é• Metody a proměnné – začínají malým, další slovo velkým nactiCislo(), pocet,

pocetPrvku

• Balíky– pouze malá písmena, např. java.lang, java.util

UPR 2008/200915

• Konstanty– pouze velká písmena MAX_VALUE, PI

Page 16: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

16

Konvence

á á í• Formátování– Na jednom řádku by měl být jeden příkaz, deklarace

jedné proměnné.– Obsah bloku odsaďte vždy o 3 či 4 mezery. V rámci

jednoho bloku by měly být všechny příkazy odsazeny stejně (Eclipse odsazuje samo).stejně (Eclipse odsazuje samo).

– Otevírací závorka bloku je obvykle na konci řádku, uzavírací samostatná na řádku. Např.

– V řídících strukturách vždy používejte složené závorky pro bloky (a to i v případě, že v bloku je pouze jeden příkaz).Používejte mezeru před otevírací závorkou a okolo

UPR 2008/200916

– Používejte mezeru před otevírací závorkou a okolo operátorů.

Page 17: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

17

Základní pojmy

ý č ý ůž ý• Datový typ určuje jakých hodnot může nabývat objekt daného datového typu a množinu přípustných operací nad tímto datovým typem. Objektem rozumíme konstantu, proměnnou, výraz a podprogramy (v Javě metody).ý p p g y ( y)

• Konstanta - veličina, která nemění hodnotu během řešení problému. Může být použita dvěma způsoby: – přímo (63, ABC, …),

j á í ( č í id ifiká ) (PI j é

UPR 2008/200917

– pojmenováním (označení identifikátorem), (PI jméno konstanty 3.14 …).

Page 18: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

18

Základní pojmy

final float PI = 3.14;

nebo

final float PI;….PI = 3.14;

UPR 2008/200918

Page 19: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

19

Základní pojmy

ě á č á ůž ě• Proměnná - veličina, která může měnit hodnotu během řešení problému. Proměnná se zavádí deklarací (pojmenování a určení datového typu

é í ě é č íkonkrétní proměnné, event. určením počáteční hodnoty)int i, k;int j = 1;

UPR 2008/200919

int j 1;

Page 20: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

20

Základní pojmy

Výraz se skládá z operátorů operandů a • Výraz se skládá z operátorů, operandů a speciálních znaků (např. závorky). Operandem může být: – konstanta,– proměnná,– výraz,ý ,– volání podprogramu (metody).

• Operand je tvořen opět výrazem:(a+b)/2, a=>c, i=2

• Příkazy popisují jednotlivé kroky algoritmu a jejich návaznosti. Rozlišujeme jednoduché a strukturované příkazy Celý algoritmus lze chápat

UPR 2008/200920

strukturované příkazy. Celý algoritmus lze chápat jako jeden příkaz:i = 2;

Page 21: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

21

Řídící struktury

é ří• Jednoduché příkazy– příkaz přiřazení (operátor přiřazení = ),– (čtení a výpis (čtení a výpis je zpravidla

realizován jako volání podprogramu)).

• Strukturované příkazy– sekvence (posloupnost),– selekce (podmínka),– cyklus.

UPR 2008/200921

Page 22: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

22

Datové typy

ý č ž ý• Datový typ určuje množinu hodnot, kterých může nabýt konstanta, proměnná, podprogram nebo výraz a množinu operací nad těmito hodnotami.

• Datový typ také určuje kolik místa (bajtů) bude • Datový typ také určuje, kolik místa (bajtů) bude v paměti pro např. proměnnou tohoto typu vyhrazeno.

• Deklarace datového objektu znamená přiřazení jednoznačného jména - identifikátoru a č í é

UPR 2008/200922

určení jeho datového typu.• V Javě DT jednoduché a referenční.

Page 23: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

23

Deklarace (zavedení) proměnných

int i;

Můžeme také definovat více proměnných stejného typu najednou (ale doporučení –deklarace každé proměnné na samostatný p ýřádek):

int a, b, c;int j = 1;float f g h;

UPR 2008/200923

float f, g, h;final float PI = 3.14;

Page 24: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

24

Jednoduché (základní) datové typy

ý é• boolean (logický typ) - objekt datového typu boolean může nabývat dvou hodnot:– pravda (angl. True, logická 1) – nepravda (angl. False, logická 0)

UPR 2008/200924

Page 25: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

25

Celé číslo

é é čí ý á• Objekt datového typu celé číslo nabývá hodnot z množiny celých čísel. Celočíselné DT v Javě:– byte (8 bitů), – short (16 bitů), – int (32 bitů), ( ),– long (64 bitů).

• Zápis:– desítkově, osmičkově (0126, 015) a šestnáctkově

(0x3A, 0xCD).

UPR 2008/200925

Page 26: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

26

Reálné číslo

é á é čí• Objekt datového typu reálné číslonabývá hodnot z množiny reálných čísel. Reálné datové typy v Javě:– float (32 bitů),– double (64 bitů).

• Zápis: 15., 15.0, .15, 5e6, 7E23, -7E+23, +7E-23.

UPR 2008/200926

Page 27: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

27

Číselné soustavy

ž é čí č í čí é• Každé číslo lze zapsat v poziční číselné soustavě ve tvaru:

an*zn+an-1*zn-1+…. +a1*z1+a0*z0+a-1*zn-1+a-2*z-2+…..

• V dekadické soustavě reprezentujeme číslo jako posloupnost číslic které mají různé váhy podle posloupnost číslic, které mají různé váhy, podle jejich pozice, tzv. poziční číselná soustava.

172=1*100+7*10+2*1

• Obecný zápis čísla v desítkové poziční číselné soustavě anan-1…a1a0a-1a-2…. má hodnotu

UPR 2008/200927

an*10n+an-1*10n-1+…. +a1*101+a0*100+a-1*10n-1+a-2*10-2+….. kde ai ∈ { 0,1,2,3,4,5,6,7,8,9}

Page 28: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

28

Číselné soustavy

• Počítač je sestrojen z logických obvodů, které pracují pouze s hodnotami 0 a 1. Proto je výhodné použít pro zápis čísel dvojkovou (binární) soustavu.(101)2 = (1*4+0*2+1*1)2 = 510

• Obecný zápis čísla v binární poziční číselné soustavě anan-1…a1a0a-1a-2…. má hodnotuan*2n+an-1*2n-1+…. +a1*21+a0*20+a-1*2n-1+a-2*2-2+….. kde ai ∈ { 0,1}

UPR 2008/200928

Page 29: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

29

Číselné soustavy13 :2 0 .625*2

6 1

3 0

1 1

0 .625 2

1 .25

0 .5

1310 = 11012 0.62510 = 0.1012

13.62510 = 1101.1012

0 1 1 .0

UPR 2008/200929

11012 = (1*23+1*22+0*21+1*20)10 = 1310

Page 30: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

30

Číselné soustavy

0.110 = = 0*20+0*2-1+0*2-2+0*2-3

+1*2-4 +1*2-5+... == 0.00011….2

0 .1*2

0 .2

0 .4

0 80 .8

1 .6

1 .2

0 .4

UPR 2008/200930

0 .4

… …

Page 31: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

31

Číselné soustavy

• Paměťová buňka se skládá z osmi bitů. Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000)2 až (11111111) 2 , 0 až

255.• Tento způsob interpretace obsahu paměťové p p p

buňky ovšem neumožňuje zápis záporných čísel. Proto se používá ještě některých dalších způsobů.

• Přímý kód ukládá absolutní hodnotu čísla se znaménkovým bitem který určí zda se jedná

UPR 2008/200931

znaménkovým bitem, který určí zda se jedná o číslo kladné nebo záporné.

Page 32: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

32

Přímý kód

123 0 |1111011 -123 1 |1111011

• V tomto způsobu kódování dochází k dvojí reprezentaci nuly. reprezentaci nuly.

0 0 |0000000 -0 1 |0000000

UPR 2008/200932

Page 33: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

33

Doplňkový kód

Č• Číslo v doplňkovém kódu interpretujeme tak, že nejvyšší váha má zápornou hodnotu -(2n). V případě osmibitové reprezentace je tedy hodnota nejvyšší váhy -128.(1|0000000)2=(1*-27+0*26+.....+0*20)10 =(-128)10( 2 10 10

(1|0000001)2 =(1*-27+0*26+.....+0*21+1*20)10 =(-127)10(1|1111111)2 =(1*-27+1*26+.....+1*20)10 =(-1)10(0|0000000)2 =(0*-27+0*26+.....+0*20)10 =(0)10(0|0000001)2 =(0*-27+0*26+.....+0*21+1*20)10 =(1)10

(0|1111111)2 =(0*-27+1*26+.....+1*20)10 =(127)10

UPR 2008/200933

( | )2 ( )10 ( )10

Page 34: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

34

Reálná čísla

• Vzhledem k tomu, že libovolný interval reálných čísel obsahuje nekonečný počet hodnot, není možné nalézt jednoznačné zobrazení mezi libovolným reálným intervalem a konečným počtem hodnot, který dává k dispozici kódování do n bitů.

• Do n bitů lze zakódovat nejvýše 2n hodnot. Proto je i počet reálných čísel zakódovaných v n bitech maximálně 2n.

• Reálná čísla jsou v počítači reprezentována vždy s určitou chybou. Tato chyba závisí na velikosti kódovaného intervalu reálných čísel, na počtu bitů do nichž reálné číslo kódujeme a na způsobu jakým kódování provádíme.

UPR 2008/200934

Page 35: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

35

Pevná řádová čárka

Při b í čí l é řád é čá j čí l • Při zobrazení čísla v pevné řádové čárce je číslo zakódováno do n bitů tak, že prvních m bitů odpovídá celé části a zbylých d bitů odpovídá zlomkové části. Takové kódování se pak ve zkratce označuje jako kódování m.d. Stejně jako u celých čísel lze použít přímý i doplňkový kód u celých čísel lze použít přímý i doplňkový kód. Nejčastěji se ale používá doplňkový kód, aby bylo možné používat i záporná čísla.

• Příklad: V kódování 8.4 zapište číslo (13.625)10.(13.625)10=(00001101.1010) 2

UPR 2008/200935

• Při kódování s pevnou řádovou čárkou v doplňkovém kódu m.d je nejmenší zobrazitelné číslo -2m-1 a největší zobrazitelné číslo 2m-1-2-d.

Page 36: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

36

Pohyblivá řádová čárka

P b í lký h čí l b h tř b li • Pro zobrazení velkých čísel bychom potřebovali neúměrné množství bitů. Například pro číslo 10300

přibližně 1000 bitů. Navíc u tak velkých čísel lze obvykle pracovat s menší absolutní přesností (bity nižších řádů lze zanedbat). Obdobná situace je u čísel se zápornými exponenty je u čísel se zápornými exponenty.

• Proto se číslo s pohyblivou řádovou čárkouskládá ze dvou částí: mantisy a exponentu. Mantisa je číslo s pevnou řádovou čárkou a exponent celé číslo. Hodnota reálného čísla r s mantisou m a exponentem e se vypočte podle

UPR 2008/200936

mantisou m a exponentem e se vypočte podle vzorce r=m*2e.

Page 37: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

37

Pohyblivá řádová čárka

Příkl d V kód á í h bli řád čá k • Příklad: V kódování s pohyblivou řádovou čárkou s mantisou 0.8 a čtyřbitovým exponentem zapište číslo (13.625)10.

(13.625)10=(0.11011010)2*2 (0100)2

• V paměti by toto číslo mohlo být uloženo jako sekvence následujících bitů: 11011010|0100.

• Rozsah je přibližně od -22 do +22 , kde n je počet bitů exponentu.R l ti í ř t δ j dá čt bitů ti δ 2 m

n-1 n-1

UPR 2008/200937

• Relativní přesnost δ je dána počtem bitů mantisy m, δ =2-m.

Page 38: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

38

Znak• Množina hodnot DT znak (char) je tvořena znaky abecedy

(malá velká písmena) číslicemi a speciálními znaky (malá, velká písmena), číslicemi a speciálními znaky. Každému znaku je přiřazena celočíselná hodnota, tzv. kód znaku. Přiřazení kódů jednotlivým znakům je voleno tak, aby odpovídalo jejich pořadí v tzv. kódovací tabulce. Mezi nejpoužívanější kódování patří kódování podle norem ASCII, Unicode (Java).

• Zápis:• Zápis:– jedním znakem (‘A’, ‘$’),– posloupností ‘\uXXXX’, jde XXXX jsou šestnáctkové číslice

(‘\u011B’ je znak ‘ě’),– „escape“ sekvencí (‘\n’ je nový řádek),– osmičkově.

UPR 2008/200938

Page 39: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

39

Název Velikost Rozsah Implicitnítypu hodnotal 8 9 223 372 036 854 775 808 ž 0long 8 -9 223 372 036 854 775 808 až 0

+9 223 372 036 854 775 807int 4 -2 147 483 648 až 0

+2 147 483 647short 2 -32 768 až +32 767 0byte 1 -128 až +127 0double 8 ±1.797 693 134 862 315 70 0.0

E+308float 4 ±3.402 823 47 E+38 0.0char 2 65 536 různých znaků \u0000

UPR 2008/200939

char 2 65 536 různých znaků \u0000Boolean 1 bit true nebo false false

Page 40: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

40

Operátor přetypování

• Pokud se hodnota proměnné kratšího typu ukládá do proměnné • Pokud se hodnota proměnné kratšího typu ukládá do proměnné delšího typu, provede Java převod automaticky (neexistuje nebezpečí ztráty informace) – rozšiřující konverze:

int cislo1 = 12;long cislo2;cislo2 = cislo1;

• Pokud se hodnota proměnné delšího typu ukládá do proměnné k tšíh t j tř b é t li it í ř t á í ž jí í í kratšího typu, je třeba provést explicitní přetypování – zužujícící konverze:

float desetinneCislo1;double desetinneCislo2 = 0.123456789;desetinneCislo1 = (float) desetinneCislo2;

UPR 2008/200940

Page 41: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

41

Operátory

Unární• Unární– unární -, unární +,

int j;int i = -3;j = -i;

– speciálníp++l-hodnota, --l-hodnotal-hodnota++, l-hodnota--

• Binární– +, -, *, /, %,– =,

! && || & | !

UPR 2008/200941

– ==, !=, &&, ||, &, |, !, <, <=, >, >=, – &, |, ^, <<, >>, >>>, ~

• Ternární.

Page 42: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

42

Operátory ++, --

ve výrazu se pracuje s původní hodnotou a • ve výrazu se pracuje s původní hodnotou a teprve poté je hodnota proměnné zvýšena:

l-hodnota++, l-hodnota—• nejprve se zvýší hodnota proměnné a pak se

použije: ++l-hodnota, --l-hodnota

int puvodni = 10;int nova = puvodni++; // puvodni=11, nova=10

int puvodni = 10;int nova = ++puvodni; // puvodni=11, nova=11

UPR 2008/200942

Page 43: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

43

Další operátory

Operátor Příklad VýznamOperátor Příklad Významoperátoru

+= x += y x = x + y-= x -= y x = x - y/= x /= y x = x / y*= x *= y x = x * y%= x %= y x = x % y++ x++ x = x + 1

++x-- x-- x = x - 1

--x

UPR 2008/200943

Page 44: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

44

Logické operace

č í ý č í• Relační operace - výsledkem relačních operací je vždy logická hodnota. Relační operace jsou binární operace:

== , !=, < , > , <= , >=, &&, ||, &, |, !|| |• Zkrácené x úplné vyhodnocování

logických součtů a součinů.

UPR 2008/200944

Page 45: Úvod do programování - JavaČíselné soustavy • Paměťová buňka se skládá z osmi bitů. • Zápis hodnot do paměťové buňky rozmezí (00000000) 2 až (11111111) 2, 0

45

Ternární operátor

T á í át l ží k t ř í t d í ě éh • Ternární operátor slouží k vytvoření tzv. podmíněného výrazu, syntaxe:

log_vyraz ? výraz1 : výraz2• Zapíšeme-li například tento podmíněný výraz:

cislo1 < 5 ? cislo2++ : cislo2--hodnota proměnné cislo2 se zvýší o jedničku (provede se hodnota proměnné cislo2 se zvýší o jedničku (provede se výraz1) pokud je hodnota proměnné cislo1 menší než 5 (podmínka (log_vyraz) je splněna). Pokud je hodnota proměnné cislo1 větší nebo rovna 5 (tedy podmínka není splněna), hodnota proměnné cislo2 se sníží (provede se vyraz2).

UPR 2008/200945