Upload
zachary-atkins
View
54
Download
5
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
Ú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ť– 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
Základné údajové typy celočíselný (int) s plávajúcou desatinnou čiarkou (float) logický, pravdivostný (boolean) znakový (char) .... reťazcový, textový (string)
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
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ú možnosť zápisu
– štandardný 3.1415296536 583.25
– vedecký 5.8345e2 znamená 5.8345 * 102
Reálne typy
počet bitov meno typu rozsah
32 float -231 až 231 – 1
64 double -263 až 263 - 1
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
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
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ž
Logický typ môže nadobúdať len dve hodnoty:
– true – pravda– false – nepravda
zmysel – elegantný zápis podmienok
if (bolaNula) ....
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.
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
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
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)
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
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
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
Typy premenných II.
int num = 10;String name = “Hello“
a tým sme sa dostali na hranicu našich aktuálnych možností...
Čí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
Čí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
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.
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);
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
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);
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);
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);
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);
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));
}
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
Ú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.