dajov typy dajov typ l prezentcia typov a

  • Slides: 31
Download presentation
Údajové typy údajový typ l prezentácia typov a operácií nad nimi l vstup údajov

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

Pojem údajový typ l údajový typ určuje – veľkosť pamäti, ktorá bude premennú vyhradená

Pojem údajový typ l údajový typ určuje – veľkosť pamäti, ktorá bude 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ť l dôvody? – zrýchlenie a obmedzenie operácií pre skupiny hodnôt – napr. l l súčet čísel: 1+1=2 súčet reťazcov 1 + 1 = 11

Základné údajové typy l l l celočíselný (int) s plávajúcou desatinnou čiarkou (float) logický,

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

Celočíselný typ l v zásade tri rôzne zápisy: – desiatkový l žiadna špeciálna predpona

Celočíselný typ l v zásade tri rôzne zápisy: – desiatkový l žiadna špeciálna predpona l napr. 205, 3 – hexadecimálny l začína 0 x alebo 0 X l napr. 0 x 12, 0 x. F 1 – osmičkový l začína 0 l napr. 023, 017

Celočíselné typy počet bitov meno typu rozsah 8 byte -27 až 27 – 1

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

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

Reálny typ delí číslo na dve časti – celú a desatinnú l možnosť zápisu l – štandardný l 3. 1415296536 l 583. 25 – vedecký l 5. 8345 e 2 znamená 5. 8345 * 102

Reálne typy počet bitov meno typu rozsah 32 float -231 až 231 – 1

Reálne typy počet bitov meno typu rozsah 32 float -231 až 231 – 1 64 double -263 až 263 - 1

Aritmetické operátory operát or + popis príklad súčet - rozdiel * súčin / celočíselný

Aritmetické operátory operát or + popis príklad súčet - rozdiel * súčin / celočíselný podiel % zvyšok po delení 10 + 3 = 13 10 - 3 = 7 10 * 3 = 30 10 / 3 = 3 10 % 3 = 1 ++ unárny inkrementálny operátor a+b a–b a*b a/b a%b a++ -- unárny dekrementálny operátor a-- a=10; a++; a je 11 a=10; a--; a je 9

In- a dekrementálny operátor l operátory môžu byť umiestnené aj pred premennú: l ak

In- a dekrementálny operátor l operátory môžu byť umiestnené aj pred premennú: l 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

Mixovanie číselných typov keď sa vo výpočte kombinuje celočíselný a reálny typ, výsledkom je

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) l celé číslo je konvertované na reálne pre samotným vykonaním operácie l operátory celočíselného delenia (%), dekrementálny (--) a inkrementálny (++) operátor fungujú tiež l

Logický typ l môže nadobúdať len dve hodnoty: – – l – pravda false

Logický typ l môže nadobúdať len dve hodnoty: – – l – pravda false – nepravda true zmysel – elegantný zápis podmienok if (bola. Nula). .

Znakový typ pôvodný 8 -bitový ASCII formát bol nahradený 16 -bitovým UNICODE formátom l

Znakový typ pôvodný 8 -bitový ASCII formát bol nahradený 16 -bitovým UNICODE formátom l UNICODE obsahuje v jednej sade znaky všetkých jazykov l okrem štandardných znakov sú k dispozícii i špeciálne, napr. : l – n – t – b – nový riadok – tabulátor – backspace a pod.

Diskusia l je vhodné inicializovať hodnoty premenných už pri ich vytvorení – minimalizuje sa

Diskusia l 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) l napr. : int sucet = 0; – premennú stačí deklarovať v momente prvého použitia l l l 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

Operátory porovnania operátor popis príklad > je väčší >= je väčší alebo rovný <

Operátory porovnania operátor popis príklad > je väčší >= je väčší alebo rovný < je menší <= je menší alebo rovný == je rovný != nie je rovný a>b a >= b a<b a <= b a == b a != b

Logické operátory operátor && & || | ^ ! popis príklad (a > b)

Logické operátory operátor && & || | ^ ! popis príklad (a > b) && (c > 3) AND, a súčasne (a > b) & (c > 3) (a > b) || (c > 3) OR, alebo (a > b) | (c > 3) XOR, exclusive OR a^b not, logická negácia !b; !(a > b)

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

Doplnenie l 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 = 10 test = (i > 10) & (j++ > 9); // test = false, j = 11

Doplnenie II. l výsledok operácie XOR – výsledok je true ak práve jeden operátor

Doplnenie II. l 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

Typy premenných l primitívne – hodnota premennej sa ukladá na mieste, kde je lokalizovaná

Typy premenných l primitívne – hodnota premennej sa ukladá na mieste, kde je lokalizovaná premenná – všetky doposiaľ uvedené typy l referenčné (reference variables) – premenná obsahuje len odkaz na miesto v pamäti, kde je uložená hodnota – typ string

Typy premenných II. int num = 10; String name = “Hello“ l a tým

Typy premenných II. int num = 10; String name = “Hello“ l a tým sme sa dostali na hranicu našich aktuálnych možností. . .

Čítanie údajov prostredníctvom tried (class) systému l prostredníctvom JOption. Class l – poskytuje vizuálne

Čítanie údajov prostredníctvom tried (class) systému l prostredníctvom JOption. Class l – poskytuje vizuálne rozhranie a pri čítaní textu mu automaticky vyhradí potrebné miesto v pamäti a uloží ho do nej

Čítanie údajov public static void main(String[] args) { String meno = ""; meno =

Čítanie údajov public static void main(String[] args) { String meno = ""; meno = JOption. Pane. show. Input. Dialog("Kto si? "); JOption. Pane. show. Message. Dialog(null, "Cau "+meno); } l pri prvom použití JOption. Pane sa na začiatok zdrojového kódu doplní príkaz na používanie knižnice, ktorá ho obsahuje

String – typ a objekt l String síce predstavuje v jazyku Java typ, ale

String – typ a objekt l 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.

Počet znakov v reťazci l Zistite dĺžku zadaného mena. String meno = ""; int

Počet znakov v reťazci l Zistite dĺžku zadaného mena. String meno = ""; int dlzka=0; meno = JOption. Pane. show. Input. Dialog("Kto si? "); dlzka = meno. length(); JOption. Pane. show. Message. Dialog(null, "Mas dlzku "+dlzka);

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

Práca s číselnými údajmi l Zistite obsah a obvod kruhu so zadanou stranou. String text = ""; int a = 0; text = JOption. Pane. show. Input. Dialog("Strana: "); a = Integer. value. Of(text); // konverzia JOption. Pane. show. Message. Dialog(null, "obsah "+a*a); JOption. Pane. show. Message. Dialog(null, "obvod "+4*a); l v prípade nečíselného vstupu aplikácia „spadne“ – skončí s chybovým hlásením

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

Opakovanie cifry l Zistite koľko ráz sa v zadanom čísle opakuje cifra 3. String text = ""; int dlzka = 0, pocet = 0; text = JOption. Pane. show. Input. Dialog("Zadaj: "); dlzka = text. length(); for(int i = 0; i < dlzka; i++) { if (text. char. At(i) = = '3'){ pocet++; } } JOption. Pane. show. Message. Dialog(null, pocet);

Maximálna cifra l Nájdite v zadanom čísle maximálnu cifru. String text = ""; int

Maximálna cifra l Nájdite v zadanom čísle maximálnu cifru. String text = ""; int dlzka = 0, mx = 0; char cifra; text = JOption. Pane. show. Input. Dialog("Cislo: "); dlzka = text. length(); for(int i=0; i<dlzka; i++) { cifra = text. char. At(i); if (mx<cifra) { mx = cifra; // problemove miesto } } JOption. Pane. show. Message. Dialog(null, mx);

Maximálna cifra inak l Nájdite v zadanom čísle maximálnu cifru. String text = "";

Maximálna cifra inak l Nájdite v zadanom čísle maximálnu cifru. String text = ""; int dlzka = 0, mx = 0, cifra = 0; text = JOption. Pane. show. Input. Dialog("Cislo: "); dlzka = text. length(); for(int i=0; i<dlzka; i++) { cifra = Integer. parse. Int(text. substring(i, i+1)); if (mx<cifra) { mx = cifra; } } JOption. Pane. show. Message. Dialog(null, mx);

Ciferný súčet l Zistite ciferný súčet zadaného čísla. String text = ""; int dlzka

Ciferný súčet l Zistite ciferný súčet zadaného čísla. String text = ""; int dlzka = 0, sucet = 0, cifra = 0; text = JOption. Pane. show. Input. Dialog("Cislo: "); dlzka = text. length(); for(int i=0; i<dlzka; i++) { cifra = Integer. parse. Int(text. substring(i, i+1)); sucet = sucet + cifra; } JOption. Pane. show. Message. Dialog(null, sucet);

Výpis reťazca od konca l Vypíšte načítaný reťazec od konca. String text = "";

Výpis reťazca od konca l Vypíšte načítaný reťazec od konca. String text = ""; int dlzka = 0; text = JOption. Pane. show. Input. Dialog("Text: "); dlzka = text. length(); for(int i = dlzka-1; i >= 0; i--) { System. out. print(text. char. At(i)); }

String alebo integer? l diskutabilné a prípad od prípadu špecifické l v prípade prístupu

String alebo integer? l diskutabilné a prípad od prípadu špecifické l 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

Úlohy na zamyslenie l l l l Zistite, ktoré z dvoch zadaných čísel je

Úlohy na zamyslenie l l l l 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.