31
Údajové typy údajový typ prezentácia typov a operácií nad nimi vstup údajov do programu ŕiešené úlohy

Údajové typy

Embed Size (px)

DESCRIPTION

Údajové typy. údajový typ prezentácia typov a operácií nad nimi vstup údajov do programu ŕiešené úlohy. Pojem údajový typ. údajový typ určuje veľkosť pamäti, ktorá bude pre premennú vyhradená množinu hodnôt, ktorú možno do premennej uložiť - PowerPoint PPT Presentation

Citation preview

Page 1: Údajové typy

Údajové typy údajový typ prezentácia typov a operácií nad nimi vstup údajov do programu ŕiešené úlohy

Page 2: Údajové typy

Pojem údajový typ údajový typ určuje

– veľkosť pamäti, ktorá bude pre premennú vyhradená– množinu hodnôt, ktorú možno do premennej uložiť– operácie a funkcie, ktoré možno na hodnoty daného

typu použiť

dôvody?– zrýchlenie a obmedzenie operácií pre skupiny hodnôt– napr.

súčet čísel: 1+1=2 súčet reťazcov 1 + 1 = 11

Page 3: Údajové typy

Základné údajové typy celočíselný (int) s plávajúcou desatinnou čiarkou (float) logický, pravdivostný (boolean) znakový (char) .... reťazcový, textový (string)

Page 4: Údajové typy

Celočíselný typ v zásade tri rôzne zápisy:

– desiatkový žiadna špeciálna predpona napr. 205, 3

– hexadecimálny začína 0x alebo 0X napr. 0x12, 0xF1

– osmičkový začína 0 napr. 023, 017

Page 5: Údajové typy

Celočíselné typy

počet bitov meno typu rozsah

8 byte -27 až 27 – 1

16 short -215 až 215 – 1

32 int -231 až 231 – 1

64 long -263 až 263 - 1

Page 6: Údajové typy

Reálny typ delí číslo na dve časti – celú a desatinnú možnosť zápisu

– štandardný 3.1415296536 583.25

– vedecký 5.8345e2 znamená 5.8345 * 102

Page 7: Údajové typy

Reálne typy

počet bitov meno typu rozsah

32 float -231 až 231 – 1

64 double -263 až 263 - 1

Page 8: Údajové typy

Aritmetické operátoryoperát

orpopis príklad príklad

+ súčet a + b 10 + 3 = 13- rozdiel a – b 10 - 3 = 7* súčin a * b 10 * 3 = 30/ celočíselný podiel a / b 10 / 3 = 3

% zvyšok po delení a % b 10 % 3 = 1++ unárny inkrementálny

operátora++ a=10; a++;

a je 11-- unárny dekrementálny

operátora-- a=10; a--;

a je 9

Page 9: Údajové typy

In- a dekrementálny operátor operátory môžu byť umiestnené aj pred

premennú: ak sa použijú pred premennou v prípadnom výraze sa

použije nová hodnota, inak stará

int i = 10;int j = 3;int k = 0;k = ++j + i; // k = 4+10 = 14 a j = 4//***************************************int i = 10;int j = 3;int k = 0;k = j++ + i; // k = 3+10 = 13, ale j = 4

Page 10: Údajové typy

Mixovanie číselných typov keď sa vo výpočte kombinuje

celočíselný a reálny typ, výsledkom je reálne číslo (číslo s plávajúcou desatinnou čiarkou)

celé číslo je konvertované na reálne pre samotným vykonaním operácie

operátory celočíselného delenia (%), dekrementálny (--) a inkrementálny (++) operátor fungujú tiež

Page 11: Údajové typy

Logický typ môže nadobúdať len dve hodnoty:

– true – pravda– false – nepravda

zmysel – elegantný zápis podmienok

if (bolaNula) ....

Page 12: Údajové typy

Znakový typ pôvodný 8-bitový ASCII formát bol

nahradený 16-bitovým UNICODE formátom UNICODE obsahuje v jednej sade znaky

všetkých jazykov okrem štandardných znakov sú k dispozícii i

špeciálne, napr.:– \n – nový riadok– \t – tabulátor– \b – backspace a pod.

Page 13: Údajové typy

Diskusia je vhodné inicializovať hodnoty premenných už

pri ich vytvorení– minimalizuje sa možnosť použitia neinicializovanej

premennej (premenná môže mať nedefinovanú alebo náhodnú hodnotu) napr.: int sucet = 0;

– premennú stačí deklarovať v momente prvého použitia napr.: int vys = a + b;

for(int i=1;i<10;i++)... pozor !!! riziko zneprehľadnenia kódu je potrebné nájsť vhodný kompromis medzi čitateľnosťou

kódu (oddelenie deklarácie premenných) a používaním neinicializovaných premenných

Page 14: Údajové typy

Operátory porovnania

operátor popis príklad

> je väčší a > b>= je väčší alebo rovný a >= b< je menší a < b

<= je menší alebo rovný a <= b== je rovný a == b!= nie je rovný a != b

Page 15: Údajové typy

Logické operátory

operátor popis príklad

&&AND, a súčasne

(a > b) && (c > 3)& (a > b) & (c > 3)||

OR, alebo(a > b) || (c > 3)

| (a > b) | (c > 3)^ XOR, exclusive OR a ^ b! not, logická negácia !b; !(a > b)

Page 16: Údajové typy

Doplnenie medzi operátormi && a &, resp. (|| a |) je

rozdiel v tom, že:– && ukončí vyhodnocovanie logického výrazu v

momente ak je podmienka nepravdivá– & vyhodnocuje výraz až do konca– príklad, kedy to má pre nás význam:

int i = 0, j = 10;boolean test;test = (i > 10) && (j++ > 9);// test = false, j = 10test = (i > 10) & (j++ > 9);// test = false, j = 11

Page 17: Údajové typy

Doplnenie II. výsledok operácie XOR

– výsledok je true ak práve jeden operátor je true, resp. ak hodnoty operátorov sú rôzne

Page 18: Údajové typy

Typy premenných primitívne

– hodnota premennej sa ukladá na mieste, kde je lokalizovaná premenná

– všetky doposiaľ uvedené typy referenčné (reference variables)

– premenná obsahuje len odkaz na miesto v pamäti, kde je uložená hodnota

– typ string

Page 19: Údajové typy

Typy premenných II.

int num = 10;String name = “Hello“

a tým sme sa dostali na hranicu našich aktuálnych možností...

Page 20: Údajové typy

Čítanie údajov prostredníctvom tried (class) systému prostredníctvom JOptionClass

– poskytuje vizuálne rozhranie a pri čítaní textu mu automaticky vyhradí potrebné miesto v pamäti a uloží ho do nej

Page 21: Údajové typy

Čítanie údajovpublic static void main(String[] args)

{

String meno = "";

meno = JOptionPane.showInputDialog("Kto si?");

JOptionPane.showMessageDialog(null,"Cau "+meno);

} pri prvom použití JOptionPane sa na začiatok zdrojového

kódu doplní príkaz na používanie knižnice, ktorá ho obsahuje

Page 22: Údajové typy

String – typ a objekt String síce predstavuje v jazyku Java typ, ale súčasne je

aj triedou (objektom) a ako taký disponuje mnohými užitočnými metódami.

Page 23: Údajové typy

Počet znakov v reťazci Zistite dĺžku zadaného mena.

String meno = "";

int dlzka=0;

meno = JOptionPane.showInputDialog("Kto si?");

dlzka = meno.length();

JOptionPane.showMessageDialog(null,"Mas dlzku "+dlzka);

Page 24: Údajové typy

Práca s číselnými údajmi Zistite obsah a obvod kruhu so zadanou stranou.

String text = "";int a = 0;

text = JOptionPane.showInputDialog("Strana:");a = Integer.valueOf(text); // konverziaJOptionPane.showMessageDialog(null,"obsah "+a*a);JOptionPane.showMessageDialog(null,"obvod "+4*a);

v prípade nečíselného vstupu aplikácia „spadne“ – skončí s chybovým hlásením

Page 25: Údajové typy

Opakovanie cifry Zistite koľko ráz sa v zadanom čísle opakuje cifra 3.

String text = "";int dlzka = 0, pocet = 0; text = JOptionPane.showInputDialog("Zadaj:");dlzka = text.length();for(int i = 0;i < dlzka; i++) { if (text.charAt(i) = = '3'){ pocet++; }}JOptionPane.showMessageDialog(null, pocet);

Page 26: Údajové typy

Maximálna cifra Nájdite v zadanom čísle maximálnu cifru.

String text = "";int dlzka = 0, mx = 0;char cifra; text = JOptionPane.showInputDialog("Cislo:");dlzka = text.length();for(int i=0;i<dlzka;i++) { cifra = text.charAt(i); if (mx<cifra) { mx = cifra; // problemove miesto }}JOptionPane.showMessageDialog(null, mx);

Page 27: Údajové typy

Maximálna cifra inak Nájdite v zadanom čísle maximálnu cifru.

String text = "";int dlzka = 0, mx = 0, cifra = 0; text = JOptionPane.showInputDialog("Cislo:");dlzka = text.length();for(int i=0;i<dlzka;i++) { cifra = Integer.parseInt(text.substring(i,i+1)); if (mx<cifra) { mx = cifra; }}JOptionPane.showMessageDialog(null, mx);

Page 28: Údajové typy

Ciferný súčet Zistite ciferný súčet zadaného čísla.

String text = "";int dlzka = 0, sucet = 0, cifra = 0; text = JOptionPane.showInputDialog("Cislo:");dlzka = text.length();for(int i=0;i<dlzka;i++) { cifra = Integer.parseInt(text.substring(i,i+1)); sucet = sucet + cifra; }

JOptionPane.showMessageDialog(null,sucet);

Page 29: Údajové typy

Výpis reťazca od konca Vypíšte načítaný reťazec od konca.

String text = "";

int dlzka = 0;

text = JOptionPane.showInputDialog("Text:");

dlzka = text.length();

for(int i = dlzka-1; i >= 0; i--) {

System.out.print(text.charAt(i));

}

Page 30: Údajové typy

String alebo integer?

diskutabilné a prípad od prípadu špecifickév prípade prístupu k jednotlivým cifrám čísla je

rýchlejšie (ako z programátorského, tak i zo systémového) a zrozumiteľnejšie použiť typ string– pri použití typu integer sme totiž nútení operovať s

operáciami pre celočíselné delenie

Page 31: Údajové typy

Úlohy na zamyslenie Zistite, ktoré z dvoch zadaných čísel je väčšie. Zistite, ktoré z troch zadaných čísel je väčšie. Pre zadaný vek zistite rok narodenia používateľa. Zistite počet výskytov párnych číslic v reťazci a zistite,

či v ňom nachádza aj nula. Pre zadané číslo zistite, či je väčší jeho ciferný súčet

alebo ciferný súčin. Zistite, na ktorej pozícii sa nachádza najmenšia cifra v

zadanom čísle. Prostredníctvom jediného cyklu nájdite najmenšiu aj

najväčšiu cifru v zadanom čísle. Zistite, koľko číslic sa nachádza v zadanom reťazci.