Jak funguje podmíněný operátor. Podmínky

Podmíněné výroky

Podmíněné příkazy vám umožňují ovládat tok spuštění programu tak, aby se každý řádek kódu neprováděl tak, jak by měl v programu. Podívejme se na všechny podmíněné příkazy v C#:

if prohlášení

Pro organizaci podmíněného větvení zdědil jazyk C# konstrukci if...else z C a C++. Jeho syntaxe by měla být intuitivní pro každého, kdo programoval v procedurálních jazycích:

pokud (podmínka)
operátor(é)
jiný
operátor(é)

Pokud je třeba pro každou podmínku provést více než jeden příkaz, musí být tyto příkazy spojeny do bloku pomocí složených závorek (...). (To platí také pro další konstrukce C#, ve kterých lze příkazy kombinovat do bloku, jako jsou smyčky for a while.)

Stojí za zmínku, že na rozdíl od jazyků C a C++ může v C# příkaz if pracovat pouze s booleovskými výrazy, ale ne s libovolnými hodnotami jako -1 a 0.

Příkaz if může používat složité výrazy a může obsahovat příkazy else, což umožňuje provádět složitější kontroly. Syntaxe je podobná syntaxi používané v podobných situacích v jazycích C (C++) a Java. Při konstrukci složitých výrazů v C# se používá zcela očekávaná sada logických operátorů. Podívejme se na následující příklad:

Použití systému; pomocí System.Collections.Generic; pomocí System.Linq; pomocí System.Text; jmenný prostor ConsoleApplication1 ( class Program ( static void Main(string args) ( string myStr; Console.WriteLine("Zadejte řádek: "); myStr = Console.ReadLine(); if (myStr.Length = 5) && (myStr.Length

Jak vidíte, počet else ifs přidaných k jedinému if není omezen. Jedna věc k poznámce if je, že složené závorky nejsou nutné, pokud je v podmíněné větvi pouze jeden příkaz, jak je znázorněno v původním příkladu.

příkaz switch

Druhý výběrový operátor v C# je příkaz switch, který poskytuje vícesměrné větvení programu. V důsledku toho vám tento operátor umožňuje vybrat si z několika alternativních možností dalšího provádění programu. Ačkoli lze vícesměrné testování provádět pomocí řady vnořených příkazů if, v mnoha případech je efektivnější použít příkaz switch. Tento operátor funguje následovně. Hodnota výrazu je postupně porovnávána s výběrovými konstantami z daného seznamu. Jakmile je nalezena shoda s jednou z podmínek výběru, provede se sekvence příkazů souvisejících s touto podmínkou. Následuje obecná forma příkazu switch:

switch(výraz) ( case konstanta1: posloupnost příkazů přerušení; konstanta případu2: posloupnost příkazů přerušení; case konstanta3: posloupnost příkazů přerušení; ... výchozí: posloupnost příkazů přerušení; )

Přestože příkaz switch...case by měl programátorům v C a C++ znát, v C# je o něco bezpečnější než jeho ekvivalent v C++. Zejména téměř ve všech případech zakazuje podmínky „nahlédnutí“. To znamená, že pokud je na začátku bloku zavolána část případu, pak fragmenty kódu za následujícími částmi případu nelze provést, pokud není k přechodu na ně explicitně použit příkaz goto. Kompilátor vynucuje toto omezení tím, že vyžaduje, aby každá případová klauzule byla následována operátor přestávky, jinak to vyhodí chybu.

Je důležité si uvědomit, že daný výraz v příkazu switch musí být celočíselného typu (char, byte, short nebo int), enumerated nebo string. Výrazy jiných typů, například s pohyblivou řádovou čárkou, nejsou v příkazu switch povoleny. Často je výraz, který řídí příkaz switch, jednoduše zredukován na jedinou proměnnou. Kromě toho musí být výběrové konstanty typu kompatibilního s typem výrazu. V jednom příkazu switch není povolena přítomnost dvou výběrových konstant stejné hodnoty.

Poslední aktualizace: 30.07.2016

Podmíněné podmínky jsou jednou ze základních součástí mnoha programovacích jazyků, které řídí program, aby pracoval po jedné z cest v závislosti na určitých podmínkách.

V jazyce C# jsou použity následující podmíněné konstrukce: if..else a switch..case

if/otherse konstruovat

Konstrukce if/else kontroluje pravdivost určité podmínky a v závislosti na výsledcích kontroly provádí určitý kód:

Int num1 = 8; int num2 = 6; if(číslo1 > číslo2) ( Console.WriteLine($"Číslo (číslo1) je větší než číslo (číslo2)"); )

Za klíčovým slovem if následuje podmínka. A pokud je tato podmínka splněna, spustí se kód, který je umístěn dále v bloku if za složenými závorkami. Výše uvedené srovnávací operace slouží jako podmínky.

V tomto případě je první číslo větší než druhé, takže výraz num1 > num2 je pravdivý a vrací true, proto řízení přejde na řádek Console.WriteLine("Číslo (num1) je větší než číslo (num2) ");

Co když ale chceme, aby se nějaká akce provedla i v případě, že podmínka není splněna? V tomto případě můžeme přidat další blok:

Int num1 = 8; int num2 = 6; if(num1 > num2) ( Console.WriteLine($"Číslo (num1) je větší než číslo (num2)"); ) else ( Console.WriteLine($"Číslo (num1) je menší než číslo (num2) )");)

Int num1 = 8; int num2 = 6; if(num1 > num2) ( Console.WriteLine($"Číslo (num1) je větší než číslo (num2)"); ) else if (num1< num2) { Console.WriteLine($"Число {num1} меньше числа {num2}"); } else { Console.WriteLine("Число num1 равно числу num2"); }

Můžeme také spojit několik podmínek najednou pomocí logických operátorů:

Int num1 = 8; int num2 = 6; if(číslo1 > číslo2 && číslo1==8) ( Console.WriteLine($"Číslo (číslo1) je větší než číslo (číslo2)"); )

V tomto případě bude blok if proveden, pokud num1 > num2 je true a num1==8 je true .

Konstrukce spínače

Konstrukt switch/case je podobný konstruktu if/else, protože umožňuje zpracovat více podmínek najednou:

Console.WriteLine("Stiskněte Y nebo N"); výběr řetězce = Console.ReadLine(); přepínač (výběr) ( velikost písmen "Y": Console.WriteLine("Stiskli jste písmeno Y"); zlom; velikost písmen "N": Console.WriteLine("Stiskli jste písmeno N"); zlom; výchozí: Console.WriteLine ("Stiskli jste neznámé písmeno");

Za klíčovým slovem switch je v závorce uveden výraz, který se má porovnávat. Hodnota tohoto výrazu se postupně porovnává s hodnotami umístěnými za operátorem case. A pokud je nalezena shoda, provede se konkrétní blok případu.

Na konec každého bloku case musí být umístěn jeden z operátorů přechodu: break , goto case , return nebo throw . Obvykle se používá příkaz break. Při jeho použití nebudou provedeny žádné další bloky případů.

Pokud však naopak chceme, aby se po provedení aktuálního bloku případu provedl další blok případu, pak můžeme místo break použít příkaz goto case:

Int číslo = 1; switch (číslo) ( case 1: Console.WriteLine("case 1"); goto case 5; // přechod na případ 5 case 3: Console.WriteLine("case 3"); break; case 5: Console.WriteLine( "případ 5" výchozí: Console.WriteLine("výchozí");

Pokud chceme řešit i situaci, kdy není nalezena žádná shoda, můžeme přidat výchozí blok, jako v příkladu výše.

Použití příkazu return vám umožní ukončit nejen blok case, ale také metodu volání. To znamená, že pokud jsou v metodě Main po konstrukci switch..case, která používá příkaz return, nějaké operátory a výrazy, pak se neprovedou a svou práci dokončí metoda Main.

Operátor throw se používá k vyvolání chyb a bude probrán v jednom z následujících témat.

Ternární provoz

Ternární operátor má následující syntaxi: [první operand - podmínka] ? [druhý operand] : [třetí operand] . Jsou zde tři operandy. V závislosti na podmínce vrací ternární operátor druhý nebo třetí operand: pokud je podmínka pravdivá , pak je vrácen druhý operand; pokud je podmínka nepravdivá, pak třetí. Například:

Int x=3; int y=2; Console.WriteLine("Stiskněte + nebo -"); výběr řetězce = Console.ReadLine(); int z = výběr=="+"? (x+y): (x-y); Console.WriteLine(z);

Zde je výsledkem ternární operace proměnná z. Pokud zadáme „+“ výše, pak se z bude rovnat druhému operandu - (x+y). Jinak se z bude rovnat třetímu operandu.

Tato lekce se zabývá podmíněným operátorem v Pascalu ( -li). Vysvětluje, jak používat více podmínek v jedné konstrukci ( A A NEBO). Jsou zvažovány příklady práce s operátorem

Připomínáme, že tato stránka nepředstírá, že poskytuje úplnou prezentaci informací k tématu. Účelem portálu je poskytnout možnost učit se látku na základě hotových řešených příkladů na téma „Programovací jazyk Pascal“ s praktickými úkoly k posílení látky. Úlohy Pascalu prezentované na webu jsou uspořádány postupně, jak se zvyšuje jejich složitost. Webové stránky mohou učitelům a lektorům sloužit jako pomocná názorná pomůcka.

Před zvažováním tohoto tématu byly používány především lineární algoritmy v Pascalu, které jsou typické pro velmi jednoduché problémy, kdy se akce (operátory) provádějí postupně, jedna po druhé. Složitější algoritmy zahrnují použití konstrukce větvení.

Blokové schéma podmíněného operátora:

Podmíněný příkaz v Pascalu má následující syntaxi:

Krátká verze:

if podmínka then příkaz;

Plná verze:

if podmínka then příkaz else příkaz;

Podmíněný operátor v Pascalu - if - slouží k organizaci průběhu úlohy takovým způsobem, že se pořadí provádění operátorů mění v závislosti na nějaké logické podmínce. Logická podmínka může nabývat jedné ze dvou hodnot: buď pravdivá nebo nepravdivá, může být buď pravdivá, nebo nepravdivá.

Složený operátor

Pokud je za pravdivé podmínky nutné provést několik příkazů, pak Podle pravidel jazyka Pascal musí být uzavřeny do bloku, počínaje funkčním slovem begin a končícím funkčním slovem end . Takový blok se obvykle nazývá držáky operátora a tato konstrukce - složený operátor:

Operátorové závorky a složený operátor v Pascalu:

if logický výraz then begin příkaz1;

operátor2; end else begin příkaz1;

operátor2; konec; Překlad operátoru podmínky z angličtiny usnadní jeho použití: LI
PAK JINÝ LI


ŽE
JINAK

  • Podmínka (v logickém výrazu) používá relační operátory.
  • Zvažte Pascalův seznam relačních operátorů:
  • více >
  • méně
  • větší nebo rovno v Pascalu >=
  • menší nebo rovno v Pascalu

srovnání v Pascalu = v Pascalu se nerovná

Příklad: najít největší ze dvou čísel


Možnost 1 Možnost 2

srovnání v Pascalu = Pochopte práci do detailu

můžete použít podmíněný operátor v Pascalu sledováním výukového videa:

vypočítat hodnotu proměnné y pomocí jedné ze dvou větví

Zobrazit řešení: var x,y:real; begin writeln("zadej x"); read(x); jestliže x>0 pak y:=ln(x) jinak y:=exp(x); writeln ("y=", y:6:2) (výsledné číslo bude zabírat 6 pozic a bude mít 2 desetinná místa) end. Všimněte si, jak je v tomto příkladu výstup y. Při odvozování typových proměnných v pascalu lze použít tzv
formátovaný výstup
, nebo zápis se dvěma dvojtečkami:
y:6:2

- číslo za první dvojtečkou (6) udává, kolik znaků bude číslo zabírat, když se zobrazí na obrazovce

- číslo za druhou dvojtečkou (2) udává, na kolik desetinných míst se skutečné číslo zobrazí Použití takového zápisu v pascalu vám tedy prakticky umožňuje zaokrouhlovat na setiny, tisíciny atd.

Úkol 0. Vypočítejte hodnotu proměnné y pomocí jedné ze dvou větví:

Úkol 1. Drakovi narostou každý rok tři hlavy, ale po dovršení 100 let pouze dvě. Kolik má drak hlav a očí? N let?

Logické operace v Pascalu (v logickém vyjádření)

Když potřebujete použít dvojitou podmínku v Pascalu, budete potřebovat logické operace.

  • Logická operace A (A), umístěný mezi dvěma podmínkami, říká, že obě tyto podmínky musí být splněny najednou (musí být pravdivé). Logický význam operace je „konjunkce“.
  • Umístěný mezi dvě podmínky, znamení NEBO (OR) říká, že stačí, když je splněna alespoň jedna z nich (jedna ze dvou podmínek je pravdivá). Logický význam operace je „disjunkce“.
  • V Pascalu XOR - znak logické operace, který má význam „přísná disjunkce“ a označuje, že je nutné, aby jedna z těchto dvou podmínek byla splněna (pravda) a druhá nesplněna (nepravda).
  • Logická operace NE před logickým výrazem nebo proměnnou znamená „negaci“ nebo „inverzi“ a označuje, že pokud je daná proměnná nebo výraz pravdivá, pak je její negace nepravdivá a naopak.

Důležité: Každá jednoduchá podmínka musí být uzavřena v závorkách.

Příklad: Podívejme se na příklady logických operací v logických výrazech v Pascalu

1 2 3 4 5 6 7 8 var n: integer ;<10 ) then writeln ("истина" ) ; if (n>začátek n: = 6 ;<10 ) then writeln ("истина" ) ; if (n>jestliže (n>5) a (n<10 ) then writeln ("истина" ) ; if not (n>7) nebo (č

7)xor(n<10) then writeln("истина"); if (n>7) potom writeln("true");<10) then writeln("истина"); if (n>konec.<10) then writeln("истина"); if not(n>var n:integer; začátek n:=6; pokud (n>5) a (n

srovnání v Pascalu = 7) nebo (č
7)xor(n 7) potom writeln("true"); konec.

srovnání v Pascalu = Společnost přijímá zaměstnance ve věku od 25 do 40 let včetně. Zadejte věk osoby a určete, zda se pro tuto společnost hodí (zobrazte odpověď „vhodné“ nebo „nevhodné“).

Zvláštnost:

musíme zkontrolovat, zda jsou současně splněny dvě podmínky. Dané celé číslo A. Zkontrolujte pravdivost tvrzení: „Číslo A je liché.“ V každodenním životě je často nutné učinit nějaké rozhodnutí v závislosti na nějaké situaci. Například, když je o víkendu teplé počasí, pojedeme k moři, jinak, když bude zataženo, budeme sedět doma.

To se také v programování stává velmi často. Pro toto existují dva podmíněné příkazy jsou if-else a switch-case


. V tomto článku vám povím o operátoru if-else a v dalším článku o switch-case.

Pro lepší pochopení si vezměme takový jednoduchý příklad, máme určitý obnos peněz a chceme si koupit auto, a zde okamžitě nastává tato podmínka: pokud máme dost peněz, tak si můžeme koupit toto auto, jinak nemůže.

Var peníze = 35000; // Řekněme, že máme 35 000 eur // Auto, které chceme koupit, stojí 50 000 eur. A nastává následující podmínka if(peníze > 50000)( document.write("Můžeme si koupit auto"); )else( document.write("Nedostatek peněz na koupi auta"); )

Uložíme dokument, otevřeme jej v prohlížeči a uvidíme, že se na stránce objeví následující zpráva: „Na koupi auta není dost peněz.“ Pokud bychom měli více než 50 000 eur, pak by se provedl kód z bloku if. Pokud bychom měli přesně 50 000 eur, pak bychom si také nemohli koupit auto, protože 50 000 není více než 50 000, aby byla podmínka v tomto případě pravdivá, musíme napsat znaménko větší nebo rovno (>=) .

Komentář! Logická operace se rovná se zapisuje se dvěma rovnítkami (==). Existuje také logická operace menší nebo rovna (

pomocí složených závorek

Pokud existuje pouze jeden operátor, pak složené závorky nejsou nutné, pokud je v bloku více než jeden operátor, jsou vyžadovány složené závorky.

Výše uvedený příklad bude perfektně fungovat bez složených závorek, protože oba bloky obsahují pouze jeden příkaz.

Do if můžete zapisovat libovolné logické operace ať už jsou jednoduché nebo složité. Můžete také použít operátory AND (&&) a OR (||).

Komentář! Přítomnost bloku else je volitelná.

Pokud je například a rovno b a c se rovná d, zobrazíme odpovídající zprávu, v opačném případě, pokud neexistuje žádný blok else, pak jednoduše přejdeme na další řádek.

Var a = 4, b = 4, c = 8, d = 8; if((a == b) && (c == d)) document.write("a se rovná b AND c se rovná d"); document.write("Další řádek kódu");

Příkaz If - else if - else

Po bloku if může být jeden nebo více bloků else if a na konci je blok else. To je užitečné, když potřebujete použít více než jednu podmínku.


Pro lepší pochopení si vezměme příklad z běžného života. Například máme určitý počet zásuvek. Pokud máme v místnosti pouze jednu zásuvku, tak můžeme připojit pouze jedno zařízení, pokud jsou zásuvky dvě, tak můžeme připojit dvě zařízení a pokud je jich více, pak můžeme připojit všechna zařízení z domu do elektrické sítě .

Nyní přejděme k programování.

Var zásuvka = 2; // Počet zásuvek v domě if(socket == 1)  document.write("

Můžeme připojit pouze jedno zařízení

"); else if(socket == 2)( document.write("

Můžeme připojit pouze dvě zařízení

"); document.write("

Například TV a notebook

"); )else( document.write("

Všechna zařízení z domu můžeme připojit k elektrické síti

"); }

V závislosti na hodnotě proměnné socket bude fungovat jeden nebo druhý blok kódu. Jak jste pravděpodobně již pochopili, pokud je socket roven 1, bude fungovat první blok kódu. Pokud je soket rovna 2, bude fungovat druhý blok kódu a pokud má soket jakoukoli jinou hodnotu (i záporné číslo), bude fungovat třetí blok kódu.

Zkratka pro kdyby jinak

Zkrácený zápis lze použít, když v závislosti na určité podmínce může proměnná získat jednu nebo druhou hodnotu.


Pokud je například hodnota proměnné a větší než hodnota proměnné b, pak do proměnné x napíšeme následující zprávu „Proměnná a je větší než proměnná b“, jinak napíšeme, že „Proměnná a je menší než proměnná b."

Var a = 50, b = 100, x; x = (a > b) ? "

Proměnná a více proměnná b

" : "

Proměnná a Zvažte Pascalův seznam relačních operátorů: proměnná b

"; //Výsledný výstup dokumentu.write(x);

To je vše, co jsem vám chtěl tímto článkem říci. Podmíněný příkaz if-else se používá ve více než jednom skriptu, takže je velmi důležité jej znát a rozumět mu. V příštím článku vám povím o dalším podmíněném operátorském přepínači.

Laboratorní práce

K tématu: " Operátor podmínky -li - jiný "


1. Účel a syntaxe

Příkaz if-else condition se používá k výběru směru programu v závislosti na podmínkách převažujících v daném bodě programu v době jeho provádění.

Obecná forma zápisu podmíněného operátoru

-li ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

Pokud v době provedení<условие>pravda, program předá řízení<блоку операторов 1>a dále k prvnímu příkazu mimo konstrukci if-else. Ve stejnou dobu<блок операторов 2>neprovedeno. Jinak pokud<условие>falešný, popravený<блок операторов 2>, A<блок операторов 1>přeskočeno. Odpovídající blokové schéma


Složené závorky v syntaxi příkazu if-else se používají ke zvýraznění bloků 1 a 2 v textu Pokuste se umístit uzavírací závorku pod úvodní, abyste zlepšili čitelnost programového kódu. Za stejným účelem musí být text uvnitř složených závorek posunut o několik pozic doprava.

Jakýkoli booleovský výraz, který se vyhodnotí jako true nebo false, lze použít jako podmínku v příkazech if-else. Níže je tabulka znázorňující nejjednodušší porovnávací operace mezi celými a reálnými čísly

Příklad 1 Je potřeba napsat program, který převede teplotu na Celsiově stupnici T C (°C) na teplotu na Kelvinově stupnici T K (K). Hodnotu T C zadává uživatel z klávesnice.

Řešení. Použijeme známý převodní vzorec – T K = T C – T 0, kde T 0 = –273 °C je teplota absolutní nuly. Zadanou T C budeme považovat za nesprávnou, pokud je menší než T 0 .

// – KelvinvsCelsius–

#zahrnout // pro streamování I/O

#zahrnout // pro I/O konzoly (getch)

#pragma argsused

floatT0 = -273; // deklarovat a inicializovat T0

floatTc, Tk; // deklarujeme skutečné Tc a Tk

cout<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // žádost Tc

-li ( Tc < T 0) // kontrola stavu Tc

cout<<» Tc < T0!»; // условие истинно, выводим на

} // obrazovka s chybovou zprávou

Tk = Tc-TO; // podmínka je nepravdivá, vypočítat

cout<< «Tk =» << Tk; // Tk и выводим на экран

getch(); // zpoždění před stisknutím klávesy

návrat 0; // ukončení programu

Zadejte výše uvedený kód, zkompilujte jej a spusťte program. Prozkoumejte výsledky operace při různých hodnotách T C.

2. Zkrácené možnosti nahrávání

Při programování se běžně setkáváme s tím, že je vyžadována nějaká akce v reakci na existující podmínky (například pokud jsou od uživatele přijata nesprávná vstupní data, vyšle chybové hlášení a ukončí program). V takových případech mohou programy C++ používat zkrácený zápis podmíněného příkazu s chybějícím blokem else. Obecná podoba takového záznamu

-li ( <условие>)

<блок операторов>;

Zde, pokud je podmínka pravdivá, je řízení přeneseno do bloku příkazů ve složených závorkách. Pokud je podmínka nepravdivá, je tento blok přeskočen. Odpovídající blokové schéma se liší od předchozího v nepřítomnosti jednoho „ramena“


Další zkrácená volba se používá, když se některý z bloků if nebo else skládá pouze z jednoho příkazu. V tomto případě je povolena absence složených závorek ohraničujících tento blok.

-li ( <условие>)

operátor 1;

operátor 2;

Zde mohou být operátory 1 a 2 nejen jednoduché jednořádkové aritmetické operace nebo I/O operátory, ale také složité víceřádkové konstrukce, jako jsou jiné (vnořené) podmíněné příkazy nebo smyčkové operátory, o kterých bude pojednáno níže.

3. Vnořené příkazy

Podmíněné příkazy mohou být vnořeny do sebe v souladu se softwarovým algoritmem, který implementují. Je povolen libovolný stupeň jejich „vnoření“.

Pokud je jeden příkaz if-else vnořen do jiného, ​​pak je první příkaz zahrnut do druhého plně, a ne jen některé z jeho if or else částí. Částečné překrývání jejich jednotlivých bloků je nepřípustné.

Ve výše uvedeném příkladu je jeden z příkazů (zobrazený tučně) vnořen do jiného. Záznam B) je nesprávný, protože blok else vnitřního podmíněného příkazu se částečně překrývá s bloky if a else vnějšího příkazu.

Příklad 2 Uživatel zadá z klávesnice tři celá čísla a, b, c. Je nutné zobrazit největší z těchto čísel.

Řešení. Jeden z možných algoritmů pro řešení tohoto problému je znázorněn na následujícím blokovém schématu.


Schéma lze implementovat programově pomocí vnořených příkazů if-else

// – Výběr největšího ze 3 čísel –

#zahrnout

#zahrnout

#pragma argsused

int main (int argc, char* argv)

plovák a, b, c; // deklarujeme tři proměnné

cout<< «Vvedite a –»; // вводимзначения a, b, c

cout<< «Vvedite b –»;

cout<< «Vvedite c –»;

if (a>b) // if a > b

if (a>c) // if a > c

cout<<» max = «<

jinak // jinak, tzn. pokud a<= с

cout<<» max = «<

jinak // jinak, tzn. pokud a<= b

if (b>c) // a if b > c

cout<<» max = «<

jinak // jinak, tzn. pokud b<= а

cout<<» max = «<

getch(); // zpoždění před stisknutím libovolné klávesy

Analyzujte blokové schéma tohoto algoritmu a jeho softwarovou implementaci. Upravte algoritmus a programový kód, abyste našli nejmenší ze tří čísel.

4. Složené logické výrazy

Podmínku v příkazu if-else lze vyjádřit jako více než pouhé srovnání dvou číselných hodnot. Velmi časté jsou například dvojité podmínky, které se v matematice píší jako „a< b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

Zejména výraz „a< b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

pokud ((a

Příklad 3 Na prázdné šachovnici je bílý pěšec na pozici (n, m) a černý střelec na pozici (k, l). Zde je první souřadnice číslo sloupce šachovnice, druhá je číslo řádku (obě se liší v rozsahu od 1 do 8). Posuďte současnou situaci podle tří možností

Pěšec je pod útokem

Slon je pod útokem

Střelec a pěšec jsou „v bezpečí“.

Řešení. Vezměme v úvahu, že pěšec může útočit na dvě pozice, které jsou mu nejblíže, šikmo vpřed a střelec zaútočí úplně na obě jeho diagonály. Odtud lze formulovat podmínky

· „((k = n+1) OR (k = n‑1)) AND (l = m+1)“ – útok pěšcem na střelce,

· „(k+l = n+m) NEBO (k-l = n-m)“ – střelecký útok na pěšce,

· jinak jsou kusy v bezpečí.

// – Šachová skladba –

#zahrnout

#zahrnout

int main (int argc, char* argv)

cout<<«Koordinaty beloi peshki:«<

cout<<» vvedite n –»;

cout<<» vvedite m –»;

cout<<«Koordinaty chernogo slona:«<

cout<<» vvedite k –»;

cout<<» vvedite l –»;

if(((k==n+1)||(k==n‑1))&&(l==m+1)) // střelec zaútočil

cout<

if((k+l==n+m)||(k-l==n-m)) // napadení pěšcem

cout<

jinak // žádný útok

cout<


Nahoru