Podmíněný výraz
Z MiS
(Rozdíly mezi verzemi)
(Převod textu ze stránky Řídící struktury programu.) |
m (→Porovnání textových řetězců: Místo class="Varovani" class="Poznamka") |
||
(Není zobrazeno 8 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | [[Category:VSE]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] |
− | [[Category:Informatika]] | + | |
− | [[Category:Programování]] | + | |
− | == | + | == Podmíněné výrazy v jazycích Java a PHP == |
− | + | <div class="Poznamka"> | |
+ | 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í. | ||
+ | </div> | ||
− | Podmíněný výraz v Javě či PHP je výraz, jehož hodnotou je logická hodnota ( | + | 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 | + | 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]] ([[Cykly|cyklech]] a [[Větvení|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 === | ||
* <code>$a == 5</code> | * <code>$a == 5</code> | ||
* <code>$a != 5</code> (není rovno) | * <code>$a != 5</code> (není rovno) | ||
Řádka 20: | Řá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ů === | ||
− | + | ; PHP: | |
− | * Java: <code> | + | * Použijeme funkci <code>strcmp()</code>, která vrací <code>0</code>, 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: [http://www.w3schools.com/php/func_string_strcmp.asp W3Schools.com → Strcmp]. | ||
+ | ; Java: | ||
+ | * Třída <code>String</code> má metodu <code>equals()</code>, která vrací <code>true</code> nebo <code>false</code>. | ||
+ | String text; | ||
+ | if (text.equals("abc")) {...} | ||
− | === | + | <div class="Poznamka"> |
− | * | + | '''Pozor! Nikdy neporovnávejte textové řetězce pomocí <code>==</code>!''' |
− | + | ||
+ | * Operátor <code>==</code> 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 <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" | ||
+ | ! Logická funkce !! PHP !! Java | ||
+ | |- | ||
+ | | AND || <code>AND</code> nebo <code>&&</code> || <code>&&</code> | ||
+ | |- | ||
+ | | OR || <code>OR</code> nebo <code><nowiki>||</nowiki></code> || <code><nowiki>||</nowiki></code> | ||
+ | |- | ||
+ | | NOT || <code>NOT</code> nebo <code><nowiki>!</nowiki></code> || <code><nowiki>!</nowiki></code> | ||
+ | |- | ||
+ | | XOR || <code>XOR</code> nebo <code>^</code> || <code>^</code> | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ; Příklady Java: | ||
+ | * Čí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>: | ||
+ | (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í == | ||
− | === 1. | + | === 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''. | * Vstup: čísla ''A'', ''B'' a ''C''. | ||
− | * Zapište podmíněný výraz, který | + | * 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 == | ||
+ | * [[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
-
$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
String
má metoduequals()
, která vracítrue
nebofalse
.
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
- Číslo
a
je menší nebo rovno5
a zároveň je číslob
různé od4
:
(a <= 5) && (b != 4)
- Číslo
a
je větší než0
nebo 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>.