Hlavní moderátor vEnd 279 Odesláno: 26. Červenec, 2016 Hlavní moderátor Share Odesláno: 26. Červenec, 2016 Obtížnost: Osnova:1. Úvod2. Relační operátory3. Logické operátory4. Přiřazovací operátory5. Bitové operátory 6. Priorita operátorů7. Závěr1. ÚvodVítám Vás u pátého návodu pro začínající pawnery. Téma se týká dalších druhů operátorů a navazuje na předchozí návod o operátorech. Abyste tento návod pochopili, přečtěte si nejprve ten předchozí.2. Relační operátoryÚkolem relačních operátorů je porovnávat operandy (vrací pravdu, nebo nepravdu). S nimi se zpravidla setkáme v podmínkách. Jedná se o operátory rovnosti, nerovnosti, větší/menší a větší/menší nebo rovno. . new cislo = 5, cislo2 = 10; cislo == cislo2 //dvě rovnítka porovnají, zda jsou čísla stejná (výsledek je false, 5 a 10 nejsou stejná) cislo != cislo2 //vykřičník a rovnítko zjistí, zda se čísla různí (výsledek je true, 5 a 10 jsou různá) cislo > cislo2 //znak pro "větší" zjistí, zda je číslo vlevo větší než to vpravo (výsledek je false, 5 není větší než 10) cislo < cislo2 //znak pro "menší" zjistí, zda je číslo vlevo menší než to vpravo (výsledek je true, 5 je menší než 10) cislo >= cislo2 //znak pro "větší nebo rovno" zjistí, zda je číslo vlevo větší nebo rovno tomu vpravo (výsledek je false, 5 není větší ani rovno 10) cislo <= cislo2 //znak pro "menší nebo rovno" zjistí, zda je číslo vlevo menší nebo rovno tomu vpravo (výsledek je true, 5 není rovno 10, ale je menší) . Všechno to jsou binární operátory. Doufám, že není třeba si je blíže vysvětlovat, princip je stejný jako v matematice, stačí nám znalosti základní školy. Zajímavost: Pawn do jisté míry umožňuje vytvořit podmínku pro interval ve tvaru: cislo . Má to však své omezení – u celých čísel (a tedy i znaků) není možné, aby vedle sebe ležely dvě konstantní hodnoty (tzv. rvalue). V takovém případě vrací podmínka vždy false! U desetinných čísel tento problém nenastává. Několik příkladů: new a = 1, b = 2, c = 3; a < b < c // funguje správně, vrací true a < 2 < c // funguje správně, vrací true 1 < b < 3 //funguje správně, vrací true a < 2 < 3 //nefunguje správně, vrací chybně false (leží vedle sebe 2 konstantní hodnoty) new Float:fA = 1.5, Float:fB = 2.33, Float:fC = 3.8; fA < fB < fC // funguje správně, vrací true fA < 2.33 < fC // funguje správně, vrací true 1.5 < fB < 3.8 //funguje správně, vrací true fA < 2.33 < 3.8 //funguje správně, vrací true Vzhledem k neočekávanému chování nedoporučuji používat, pokud s Pawn teprve začínáte a nevíte přesně, co děláte. 3. Logické operátoryPomocí logických operátorů tvoříme složitější podmínky. Stejně jako relační, tak i tyto operátory vrací buď pravdu, nebo nepravdu. Logickými operacemi jsou logický součin, logický součet a logická negace.a) Logický součinLogický součin je binární operace a značí se dvěma ampersandy (&&). Výsledek této operace je pravdivý, právě když jsou oba výrazy pravdivé. . new cislo = 5, cislo2 = 10, cislo3 = 15; cislo < cislo2 && cislo2 > cislo3 //výsledek je false . Prvním výrazem je "cislo ". Ten je pravdivý, 5 je menší než 10. Druhým výrazem je "cislo2 > cislo3". To pravda není, 10 není větší než 15. Jeden z výrazů je nepravdivý, proto je celá podmínka nepravdivá.b ) Logický součetLogický součet je binární operace a značí se dvěma svislicemi (||). Výsledek této operace je pravdivý, když alespoň jeden výraz je pravdivý. . cislo < cislo2 || cislo2 > cislo3 //výsledek je true . Vraťme se k předchozímu příkladu. Už víme, že první výraz je pravdivý a druhý nepravdivý. Poněvadž se teď jedná o logický součet, tak celá podmínka bude pravdivá – stačí jen jeden pravdivý výraz.Při složitějších podmínkách si nemusíme být jisti tím, jak ji jazyk vyhodnotí. Proto nám Pawn umožňuje i v tomto případě použít kulaté závorky k určení priority vyhodnocení. . (cislo < cislo2 && cislo2 > cislo3) || (cislo3 > cislo && cislo3 >= cislo2) . Teď jsme si jistí, že se napřed vykoná logický součin a až poté logický součet.c) Logická negaceLogická negace je unární operace a značí se vykřičníkem (!). Účelem této operace je převrátit pravdu v nepravdu a naopak. . new bool:logicka = true; !logicka //hodnota bude false . Počáteční hodnota proměnné logicka je true. Po znegování bude hodnota převrácená – false.4. Přiřazovací operátoryOperátor přiřazení již známe – rovnítko. Probrali jsme jej v předchozích návodech, takže teď si ho jen rychle zopakujeme. Na levé straně je proměnná/pole, do které(ho) přiřazujeme, a na pravé straně hodnota nebo výraz, který přiřazujeme. . new cislo = 5; //přiřazení celého čísla new desetinne = 3.14; //přiřazení desetinného čísla new znak = 'o'; //přiřazení znaku new retezec[] = "ahoj"; //přiřazení řetězce new pole[] = {1, 3, 6}; //přiřazení hodnot poli . Pro zajímavost (rozklikněte spoiler): Operátorů přiřazení je ve skutečnosti víc. Někdy potřebujeme s danou proměnnou provést nějakou operaci, řekněme přičíst k ní číslo 5. Pak by to vypadalo takto: . cislo = cislo + 5; . Můžeme si ale práci ulehčit tak, že použijeme operátor +=: . cislo += 5; . Je to totéž co předchozí kód, akorát kratší a elegantnější. Stejně to funguje i s dalšími binárními operátory (-=, *=, /= atd.). . 5. Bitové operátoryBitové operátory manipulují s bity. Tato problematika zdaleka přesahuje znalosti potřebné pro nováčky, proto ji zde uvádět nebudu. Nicméně, pokud se přeci jen chcete o manipulaci s bity něco dozvědět, přečtěte si tento návod, kde se tomu Mort podrobně věnuje. 6. Priorita operátorů Už jsme si zmínili, že prioritu operátorů můžeme ovlivnit kulatými závorkami jako v matematice, ale jaká je vlastně výchozí priorita operátorů? Na to se lze podívat do spoileru. Je to jen pro zajímavost, nic, bez čeho bychom se neobešli. . 7. ZávěrA tímto končí druhý návod věnující se operátorům. Nyní už víte to potřebné o operátorech. Samozřejmě jich existuje mnoho, neuvedl jsem všechny (čárka, dvojtečka i všechny druhy závorek jsou také operátory), ale to už jsou drobnosti, které v praxi sami pochytíte.Tento návod, stejně jako ten předchozí, je určen pro nováčky, pokročilejší věci byly buďto úplně vynechány, nebo jsou uvedeny ve spoilerech. Přesto, zdá-li se Vám, že jsem něco opomněl, někde jsem se spletl nebo se jen chcete vyjádřit, pište do tohoto tématu. Ověřený návod Tento návod prošel validací, a lze ho proto považovat za ověřený. 3 Link to comment Share on other sites More sharing options...
milous22 14 Odesláno: 22. Srpen, 2017 Share Odesláno: 22. Srpen, 2017 (upraveno) zdar, k tým relačným operátorom by sa mohla prihodiť aj poznámka, že sa dajú aj "opakovať" napr. "a < b < c...". Pričom treba ale spomenúť, že sa v takomto zápise nesmú stretnúť pri sebe dve rvalue (pevné hodnoty) napr. "1 < 2 < a", lebo to vracia vždy false. Edited 22. Srpen, 2017 by milous22 Link to comment Share on other sites More sharing options...
Hlavní moderátor vEnd 279 Odesláno: 22. Srpen, 2017 Author Hlavní moderátor Share Odesláno: 22. Srpen, 2017 zdar, k tým relačným operátorom by sa mohla prihodiť aj poznámka, že sa dajú aj "opakovať" napr. "a false. Ahoj, přidám to tam, ale do spoileru jako zajímavost (má to náročnost 1/5 a bez tohohle se nováčci hravě obejdou). Díky za návrh na doplnění. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now