![]() Specializovaný týdeník o výpočetní technice o Internetu (CW 46/97) Programování v jazyce Java
David Štrupl
Větvení a cykly I příkazy větvení a cyklů jsou svojí syntaxí velice podobné jazyku C. Nejjednodušší větvení zajišťuje příkaz if:
if (podmínka) {
V podmínce většinou s úspěchem použijeme porovnání:
if (a == 10 ) { .... // test na rovnost
Při porovnávání je třeba dávat pozor na to, porovnáváme-li kompatibilní typy. Nemůžeme např. porovnávat referenci na objekt se základním typem. Pokud chceme nějakou činnost opakovat, použijeme jeden z cyklů. V Javě existují dvě varianty while cyklu. První má podmínku na začátku:
while (podm) {
a druhá varianta na konci:
do {
Oba cykly provádějí příkazy uvedené v těle cyklu tak dlouho, dokud je uvedená podmínka pravdivá. Rozdíl mezi těmito dvěma variantami je pouze v tom, že v prvním případě se podmínka vyhodnotí před provedením těla cyklu, zatímco v druhém případě se vyhodnotí až po provedení příkazů v těle cyklu. Podmínka musí být výraz, který se vyhodnotí na hodnotu typu boolean. Tj. typické je použití některého z booleovských operátorů (==, !=, <, >, >=, <=), podobně jako v případě příkazu if. Často používaným druhem cyklu je tzv. for cyklus:
for (inicializace; podmínka; aktualizace) {
Tento zápis má téměř stejný význam jako posloupnost:
inicializace;
Klasické použití for cyklu je pro provádění činností s předem známým počtem opakování. Většinou se použije zápis podobný následujícímu:
for (int i = 0; i < 10; i++){
Tento cyklus bude proveden 10krát. Proměnná deklarovaná v inicializační části se nazývá řídicí proměnná cyklu. Při použití zde uvedeného zápisu je rozsah její platnosti omezen na cyklus. Posledním z větvících příkazů je příkaz opět známý z jazyka C -- switch.
Typické použití příkazu switch je následující:
switch (výraz) {
Tento příkaz probíhá tak, že po vyhodnocení výrazu se provede skok podle získané hodnoty na některou větev case. Pokud hodnota výrazu není uvedena v žádné case větvi, může provádění skočit na větev default (pokud je větev default uvedena). Příkazy break jsou stejně jako v jazyce C potřeba na ukončení příslušné větve -- pokud by blok za case nebyl ukončen klíčovým slovem break, pokračovalo by provádění následujícími příkazy. Příkaz break může být použit k ukončení provádění libovolného cyklu. Pokud jsou cykly v sobě vnořeny, ukončí provádění nejvnitřnějšího z nich. Pokud chceme ukončit nikoliv nejvnitřnější cyklus, můžeme jej označit návěštím, které lze potom uvést za příkazem break:
vnejsi:for (i=0; i<10; i++) {
Návěštím mohou být označeny pouze cykly a bloky switch -- nelze jej použít u libovolného příkazu. Použití návěští na jiném místě než u cyklů nemá smysl, protože v Javě příkaz goto neexistuje! Podobným příkazem jako příkaz break je příkaz continue, který způsobí skok na novou iteraci cyklu. I u něho může být uvedeno návěští. Posledním způsobem, jak ukončit provádění cyklu, je použít uvnitř něho příkaz return pro návrat z metody.
Proměnné a rozsahy platnosti Každá proměnná a metoda má přesně určeno, na kterém místě v programu ji můžeme použít -- tj. má definován svůj rozsah platnosti. Nejjednodušší je určení rozsahu platnosti u lokálních proměnných. Lokální proměnná je viditelná od své deklarace do ukončení bloku, ve kterém se tato deklarace nachází:
int k = 10;
Proměnné deklarované jako vlastnosti objektů v definici tříd jsou vždy viditelné z kódu metod dané třídy. O tom, zda bude nějaká vlastnost nebo metoda přístupná z vnějšího kódu (z metod nepatřících stejné třídě), rozhoduje modifikátor uvedený před deklarací proměnné nebo metody. Modifikátor může být jedno z klíčových slov:
public -- proměnná nebo metoda je viditelná všude, kde je povoleno použít danou třídu private -- proměnná nebo metoda je viditelná pouze uvnitř třídy protected -- proměnná nebo metoda je viditelná v dané třídě a ve všech jejích potomcích bez uvedení klíčového slova -- proměnná nebo metoda je viditelná v aktuálním balíku
Příklad:
class MojeTrida {
Jak je vidět z uvedeného příkladu, píše se modifikátor přístupu vždy před typ deklarované proměnné. Význam modifikátorů je stejný v případě proměnných i metod.
Statické proměnné a metody Všechny proměnné a metody, o kterých jsme doposud mluvili, byly tzv. instanční proměnné a metody. Znamenalo to, že s každým vytvořením nového objektu dané třídy se naalokovalo místo a vytvořily se nové kopie deklarovaných proměnných. To má logický smysl, protože instanční proměnná je součástí definice objektu -- vytvoříme-li nový objekt, musí se mu vytvořit i nové vlastnosti. V Javě můžeme použít ještě jeden druh proměnných -- tzv. statické (třídové) proměnné. Tyto proměnné jsou také součástí definice třídy, ale jsou označeny klíčovým slovem static. Rozdíl oproti "normálním" proměnným je ten, že statická proměnná existuje pouze jednou pro celou třídu (proto se jí také někdy říká třídová proměnná). Tyto proměnné jsou dobré pro udržování globálních informací o dané třídě, např. můžeme sledovat, kolik objektů dané třídy máme vytvořeno. S existencí statických proměnných je úzce svázána i existence statických metod. Tyto metody se podobně jako statické proměnné vztahují k celé třídě, a mohou tedy používat pouze statické proměnné dané třídy (a samozřejmě i lokální proměnné deklarované ve svém těle). Ukázkou statické metody je definice metody main. Při volání statických metod nemusí (a většinou ani není) vytvořen objekt dané třídy (při volání metody main nemusí být vytvořen objekt třídy, ve které se metoda main nachází). Speciálním druhem statických proměnných jsou konstanty, které jsou uvedeny klíčovým slovem final. Pokud se před deklarací proměnné objeví slovo final, znamená to, že hodnota této proměnné nesmí být v průběhu výpočtu změněna. Typická kombinace klíčových slov je tedy public static final:
public class MojeTrida {
Pokud jsou proměnné (konstanty) deklarovány s modifikátorem public, můžeme jejich hodnotu použít i vně definice dané třídy. V tomto případě je možné použít před jménem proměnné jméno třídy, ve které je tato proměnná (statická) deklarována:
... int k = MojeTrida.PI;
Konstanty většinou označujeme identifikátorem, který je celý napsán velkými písmeny -- pro snazší orientaci v programu.
| <<< | COMPUTERWORLD | IDG CZ homepage | |