Podmíněný výraz
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (→Porovnání textových řetězců:  Přidán příklad, proč neporovnávat stringy přes ==.) | |||
| Řádka 50: | Řádka 50: | ||
|   String text; |   String text; | ||
|   if (text.equals("abc")) {...} |   if (text.equals("abc")) {...} | ||
| + | |||
| + | <div class="Varovani"> | ||
| + | Pozor! Nikdy neporovnávejte textové řetězce pomocí <code>==</code>.  | ||
| + | |||
| + | * Operátor <code>==</code> testuje, jestli se jedná o stejný objekt, nikoli jestli jsou hodnoty objektů stejné. | ||
| + | * Překladač se snaží zbytečně nevytvářet nové objekty třídy <code>String</code>, takže porovnání přes <code>==</code> fungovat v některých případech ''může''. Ale nelze na to spoléhat! | ||
| + | |||
| + | Zkuste následující kód (testováno na OpenJDK 11): | ||
| + |  String text1 = "ahoj"; | ||
| + |  String text2 = "a"; | ||
| + |  text2 += "hoj"; | ||
| + |  System.out.println("text1: "+text1+", text2: "+text2); // -> text1: ahoj, text2: ahoj | ||
| + |  System.out.println(text1 == text2); 			// -> false (i když se jedná o stejný text | ||
| + | </div> | ||
| === Zápis logických funkcí === | === Zápis logických funkcí === | ||
Verze z 3. 3. 2021, 11:42
| Obsah | 
Podmíněné výrazy v jazycích Java a PHP
Následující text je velmi neformální a je určen žákům střední školy, kteří začínají s programováním. Omluvte proto častá zjednodušení.
Podmíněný výraz v Javě či PHP je výraz, jehož hodnotou je logická hodnota (pravda nebo nepravda). Výsledkem je tedy datový typ boolean.
Podmíněný výraz se jako ostatní výrazy v Javě skládá z proměnných, konstant a operátorů.
Podmíněný výraz se používá k zápisu podmínek v řídících strukturách (cyklech a větvení — podmíněných příkazech).
Zápis podmíněných výrazů (Java a PHP)
Operátory porovnání číselných hodnot
-  $a == 5
-  $a != 5(není rovno)
-  $a < 5
-  $a > 5
-  $a <= 5
-  $a >= 5
Logické hodnoty
| Hodnota | PHP i Java | 
|---|---|
| Pravda | true | 
| Nepravda | false | 
Porovnání textových řetězců
- PHP
-  Použijeme funkci strcmp(), která vrací0, pokud jsou parametry stejné řetězce:
var $t1 = "ahoj";
var $t2 = "ahoj";
if (strcmp($t1, $t2) == 0) {
    echo "Texty jsou stejné!";
}
- Více viz například: W3Schools.com → Strcmp.
- Java
-  Třída Stringmá metoduequals(), která vracítruenebofalse.
String text;
if (text.equals("abc")) {...}
Pozor! Nikdy neporovnávejte textové řetězce pomocí ==. 
-  Operátor ==testuje, jestli se jedná o stejný objekt, nikoli jestli jsou hodnoty objektů stejné.
-  Překladač se snaží zbytečně nevytvářet nové objekty třídy String, takže porovnání přes==fungovat v některých případech může. Ale nelze na to spoléhat!
Zkuste následující kód (testováno na OpenJDK 11):
String text1 = "ahoj";
String text2 = "a";
text2 += "hoj";
System.out.println("text1: "+text1+", text2: "+text2); // -> text1: ahoj, text2: ahoj
System.out.println(text1 == text2); 			// -> false (i když se jedná o stejný text
Zápis logických funkcí
| Logická funkce | PHP | Java | 
|---|---|---|
| AND | ANDnebo&& | && | 
| OR | ORnebo|| | || | 
| NOT | NOTnebo! | ! | 
| XOR | XORnebo^ | ^ | 
- Příklady Java
-  Číslo aje menší nebo rovno5a zároveň je číslobrůzné od4:
(a <= 5) && (b != 4)
-  Číslo aje větší než0nebo metodaspusteno()vrací nepravda:
(a > 0) || ! spusteno()
- Příklady PHP
($a <= 5) AND ($b != 4)
Cvičení
1. Porovnání hodnot
- Vstup: čísla K a limit.
- Zapište podmíněný výraz, který vrátí true, právě když je hodnota K alespoň o 10 větší než hodnota limit.
2. Porovnání hodnot
- Vstup: čísla A, B a C.
- Zapište podmíněný výraz, který vrátí true, právě když je hodnota A je větší než hodnota B a zároveň větší než hodnota C.
3. Číslo z intervalu
- Vstup: čísla A, B a C.
- Zapište podmíněný výraz, který vrátí true, právě když je hodnota A z intervalu <B, C>.
Související stránky
Zdroje:
- The Java Tutorials [online]. 1995, 2011 [cit. 2011-06-07]. Control Flow Statements.
-  ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. Řídící struktury. 
- Dostupné z WWW: <http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5>.
 
-  ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. Cykly. 
- Dostupné z WWW: <http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6>.
 
