Podmíněný výraz

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Zápis logických funkcí: Doplněna přehledná tabulka.)
m (Porovnání textových řetězců: Místo class="Varovani" class="Poznamka")
 
(Nejsou zobrazeny 4 mezilehlé verze od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]]
[[Category:Informatika]]
+
[[Category:Programování]]
+
  
  
Řádka 11: Řádka 9:
 
</div>
 
</div>
  
Podmíněný výraz v Javě či PHP je výraz, jehož hodnotou je logická hodnota (boolean, pravda nebo nepravda).
+
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 <code>boolean</code>.
  
 
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 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í struktury programu | řídících strukturách]] (cyklech a podmíněných příkazech).
+
Podmíněný výraz se používá k zápisu podmínek v [[Řídící struktury programu | řídících strukturách]] ([[Cykly|cyklech]] a [[Větvení|větvení &mdash; podmíněných příkazech]]).
 +
 
 +
 
  
 
== Zápis podmíněných výrazů (Java a PHP) ==
 
== Zápis podmíněných výrazů (Java a PHP) ==
Řádka 26: Řádka 26:
 
* <code>$a <= 5</code>  
 
* <code>$a <= 5</code>  
 
* <code>$a >= 5</code>  
 
* <code>$a >= 5</code>  
 +
 +
=== Logické hodnoty ===
 +
{| class="wikitable"
 +
! Hodnota !! PHP i Java
 +
|-
 +
| Pravda || <code>true</code>
 +
|-
 +
| Nepravda || <code>false</code>
 +
|-
 +
|}
  
 
=== Porovnání textových řetězců ===
 
=== Porovnání textových řetězců ===
Řádka 41: Řádka 51:
 
  if (text.equals("abc")) {...}
 
  if (text.equals("abc")) {...}
  
=== Zápis logických funkcí ===
+
<div class="Poznamka">
 +
'''Pozor! Nikdy neporovnávejte textové řetězce pomocí <code>==</code>!'''
  
 +
* Operátor <code>==</code> testuje, jestli se jedná o&nbsp;stejný objekt třídy String, nikoli jestli jsou hodnoty obou objektů stejné.
 +
* Někdy to sice ''může'' fungovat. Překladač se totiž snaží zbytečně nevytvářet nové objekty třídy <code>String</code>, takže některé instance skutečně můžou být odkazy na stejný objekt. Ale nelze na to spoléhat! Navíc je potom takový kód závislý na chování překladače!
 +
 +
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í ===
 
{| class="wikitable"
 
{| class="wikitable"
 
! &nbsp;Logická funkce&nbsp; !! &nbsp;PHP&nbsp; !! &nbsp;Java&nbsp;
 
! &nbsp;Logická funkce&nbsp; !! &nbsp;PHP&nbsp; !! &nbsp;Java&nbsp;
Řádka 56: Řádka 79:
 
|}
 
|}
  
; Příklady
+
; Příklady Java:
* PHP: <code>($a <= 5) AND ($b != 4)</code>
+
* Číslo <code>a</code> je menší nebo rovno <code>5</code> a zároveň je číslo <code>b</code> různé od <code>4</code>:
* Java i PHP: <code>(a <= 5) && (b != 4)</code>
+
(a <= 5) && (b != 4)
 +
 
 +
* Číslo <code>a</code> je větší než <code>0</code> nebo metoda <code>spusteno()</code> vrací ''nepravda'':
 +
(a > 0) || ! spusteno()
 +
 
 +
; Příklady PHP
 +
($a <= 5) AND ($b != 4)
  
 
== Cvičení ==
 
== Cvičení ==
Řádka 73: Řádka 102:
 
* Vstup: čísla ''A'', ''B'' a ''C''.  
 
* 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 &lt;''B'', ''C''&gt;.
 
* Zapište podmíněný výraz, který vrátí ''true'', právě když je hodnota ''A'' z intervalu &lt;''B'', ''C''&gt;.
 +
 +
 +
== Související stránky ==
 +
* [[Větvení]]
 +
 +
  
 
== Zdroje: ==
 
== Zdroje: ==

Aktuální verze z 3. 3. 2021, 15:24



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

Logické hodnoty

Hodnota PHP i Java
Pravda true
Nepravda false

Porovnání textových řetězců

PHP
var $t1 = "ahoj";
var $t2 = "ahoj";
if (strcmp($t1, $t2) == 0) {
    echo "Texty jsou stejné!";
}
Java
String text;
if (text.equals("abc")) {...}

Pozor! Nikdy neporovnávejte textové řetězce pomocí ==!

  • Operátor == testuje, jestli se jedná o stejný objekt třídy String, nikoli jestli jsou hodnoty obou objektů stejné.
  • Někdy to sice může fungovat. Překladač se totiž snaží zbytečně nevytvářet nové objekty třídy String, takže některé instance skutečně můžou být odkazy na stejný objekt. Ale nelze na to spoléhat! Navíc je potom takový kód závislý na chování překladače!

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 AND nebo && &&
OR OR nebo || ||
NOT NOT nebo ! !
XOR XOR nebo ^ ^
Příklady Java
(a <= 5) && (b != 4)
(a > 0) || ! spusteno()
Příklady PHP
($a <= 5) AND ($b != 4)

Cvičení

1. Porovnání hodnot

2. Porovnání hodnot

3. Číslo z intervalu


Související stránky


Zdroje:

  1. The Java Tutorials [online]. 1995, 2011 [cit. 2011-06-07]. Control Flow Statements.
    Dostupné z WWW: <http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html>.
  2. 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>.
  3. 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>.
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje