Kontakty

Čo je viac s alebo c. Prevádzkovatelia a logickí operátori. Operácie pre celočíselné počítače

Keďže v predchádzajúcom článku som prvýkrát použil logickú operáciu, poviem vám, čo sú, koľko a ako ich používajú.

V C ++ existujú tri logické operácie:

  1. Logická operácia a &&, sme už známe;
  2. Logická operácia alebo || ;
  3. Logická operácia NE. ! alebo logické odmietnutie.

Logické operácie tvoria komplexný (kompozitný) stav z niekoľkých jednoduchých (dvoch alebo viacerých) podmienok. Tieto operácie zjednodušia štruktúru softvérový kód niekoľko krát. Áno, bez nich môžete urobiť, ale potom sa počet IFOS zvyšuje niekoľkokrát, v závislosti od stavu. Nasledujúca tabuľka stručne opísala všetky logické operácie v programovacom jazyku C ++ na vytvorenie logických podmienok.

Teraz by ste mali pochopiť rozdiel medzi logická prevádzka A logická operácia alebo nie je zmätená v budúcnosti. Je čas zoznámiť sa s typom údajov Bool -Logic. Tento typ Údaje môžu trvať dve hodnoty: TRUE (Pravda) a False. Podmienka skontrolovaná v výberových operátoroch má typ údajov bool. Zvážte zásadu prevádzky ďalšieho programu a všetko bude chápané všetkými týmito logickými operáciami.

// or_and_not.cpp: Určuje vstupný bod pre aplikáciu konzoly. #Include "stdafx.h" #include Použitie menného priestoru STD; Int Hlavný (Int Argc, Char * ARGV) (BOOL A1 \u003d TRUE, A2 \u003d FALSE; // Oznámenie logických premenných BOOL A3 \u003d TRUE, A4 \u003d FALSE; COUT<< "Tablica istinnosti log operacii &&" << endl; cout << "true && false: " << (a1 && a2) << endl // логическое И << "false && true: " << (a2 && a1) << endl << "true && true: " << (a1 && a3) << endl << "false && false: " << (a2 && a4) << endl; cout << "Tablica istinnosti log operacii ||" << endl; cout << "true || false: " << (a1 || a2) << endl // логическое ИЛИ << "false || true: " << (a2 || a1) << endl << "true || true: " << (a1 || a3) << endl << "false || false: " << (a2 || a4) << endl; cout << "Tablica istinnosti log operacii !" << endl; cout << "!true: " << (! a1) << endl // логическое НЕ << "!false: "<< (! a2) << endl; system("pause"); return 0; }

Riadky 9 a 10 Musíte byť chápané, pretože tu sa inicializujú typ premenných. Bool . A každá premenná je priradená hodnota Pravda alebo lož. Začiatok 9. riadok A dokončovanie 20-y.Zobrazí sa používanie logických operácií. Výsledok programu (pozri obrázok 1).

Tabica Istinnosti Log operacii && true && false: 0 FALSE && TRUE: 0 TRUE && TRUE: 1 FALSE && FALSE: 0 TABLICA ISTINNOSTI LOG OPERACII || TRUE || FALSE: 1 FALSE || TRUE: 1 TRUE || TRUE: 1 FALSE || FALSE: 0 TABIKY ISTINNOSTI LOG OPERACII! TRUE: 0! FALSE: 1 Ak chcete pokračovať, stlačte ľubovoľný kľúč. . .

Obrázok 1 - Logické operácie C ++

Pravdepodobne máte otázku, "Aké sú tieto testery a jednotky?". Ak existuje otázka, musíte odpovedať. Odpoveď: "NOLIK je reprezentáciou logickej hodnoty falošných (lží), ale jednotky sú logickou pravdivou (pravdou)." Stručne vysvetlite niektoré chvíle. Zlúčeninový stav s použitím logických A Je pravda, len ak sú obe jednoduché podmienky pravdivé. Vo všetkých ostatných prípadoch je kompozitný stav nepravdivý. Stav zloženia s logickým alebo falošným len vtedy, keď nepravdivé jednoduché podmienky. Vo všetkých ostatných prípadoch je kompozitný stav pravdivý. Logický popier Nie je jednoznačná operácia a nekombinuje dve podmienky, na rozdiel od logických operácií A a Aleboktoré sú binárne operácie. Logické odmietnutie vám umožní otočiť význam stavu, že v niektorých prípadoch je veľmi pohodlné. Podmienka s logickým odmietnutím je pravdivá, ak je rovnaký stav false bez negatívneho a naopak.

V texte v akomkoľvek prirodzenom jazyku môžete vybrať štyri hlavné prvky: symboly, slová, frázy a návrhy. Algoritmický jazyk obsahuje aj také prvky, iba slová sa nazývajú Lexemes (elementárne štruktúry), frázy - výrazy, ponuky - operátori. Lexémy sú tvorené zo symbolov, výrazov z Lexémov a symbolov, operátorov z výrazov a symbolov lexingu (Obr. 1.1)

Obr. 1.1. Zloženie algoritmického jazyka

Prvky algoritmického jazyka sú teda:

1) Abecedný jazyk C ++, ktoré zahŕňa

- Kapitálové a malé latinské písmená a podčiarknuté znamenie;

- arabské čísla od 0 do 9;

- ŠPECIÁLNE ZNAČKY "(), () + - /% *. ": A?<>=!#^

- Slepé symboly (medzera, Tab symbol, prechodové symboly na nový reťazec).

2) Jazykové lexémy sú vytvorené z znakov:

Identifikátory - Názvy objektov C-Program. V identifikátore môžu byť použité latinské písmená, čísla a podčiarknuté znamenie. Kapitálové a malé písmená sa líšia, napríklad PROG1, PROG1 a PROG1 sú tri rôzne identifikátory. Prvý znak by mal byť písmeno alebo podčiarknuté (ale nie obrázok). Medzery v identifikátoroch nie sú povolené.

Kľúče (Vyhradené) slová sú slová, ktoré majú špeciálnu hodnotu pre kompilátor. Nemôžu byť použité ako identifikátory.

- Známky operácií sú jedno alebo viac znakov, ktoré určujú akciu na operande. Operácie sú rozdelené do unského, binárneho a Ternar v počte operandov, ktoré sa zúčastňujú na tejto operácii.

Konštanty- Toto sú nemenné hodnoty. Tam sú celé číslo, skutočné, symbolické a reťazce konštanty. Kompilátor zdôrazňuje konštantu ako lexeme (elementárny dizajn) a súvisí s jedným z typov podľa jeho vzhľadu.

Rozdiely - Konzoly, bodky, Ikony čiarky.

Konštanty v C ++

Konštantný - Toto je lexém, ktorý predstavuje obraz pevnej numerickej, reťazcov alebo symbolickej hodnoty.

Konštanty sú rozdelené do 5 skupín:

- skutočný (pohyblivý bod);

- uvedené;

- symbolické;

- reťazec.

Kompilátor vyberá Lex a súvisí s konkrétnou skupinou a potom vo vnútri skupiny do konkrétneho typu na jeho podobe nahrávania v texte programu a podľa numerickej hodnoty.

Konštanty môžu byť desatinné, ok zcal a hexadecimálne. Desatinná konštanta je definovaná ako postupnosť desatinných číslic, ktorá začína nie 0, ak to nie je 0 (príklady: 8, 0, 192345). Oživa konštanta je konštanta, ktorá vždy začína s 0. V 0 nasleduje čísla OCAL (príklady: 016 - Desatinná hodnota 14, 01). Hex konštanty sú sekvenciou hexadecimálneho čísla, ktoré predchádzajú znaky 0x alebo 0x (príklady: 0ha, 0x00f).

V závislosti od hodnoty celého konštantu ho kompilátor predstaví rôznymi spôsobmi k pamäti počítača (t.j. kompilátor sa zobrazí zodpovedajúci konštantný typ údajov).

Skutočné konštanty majú inú formu internej prezentácie v pamäti počítača. Kompilátor rozpoznáva také konštanty podľa ich mysle. Skutočné konštanty môžu mať dve formy: s pevným bodom a plávajúcim bodom. Konštantný pohľad na pevné bod: [Obrázky]. [Obrázky] (príklady] (príklady: 5.7, .0001, 41.). Pohľad na konštantu plávajúceho bodu: [Obrázky] [.] [Obrázky] e | e [+ | -] [Údaje ] (Príklady: 0,5E5, 0,11E-5, 5E3). Pri nahrávaní skutočných konštantov, buď celkovou alebo zlomeninou, alebo desatinnou čiarkou alebo znakom exponenciálov s indikátorom rozsahu, môže byť znížená.

Vymenované konštanty sú zadané pomocou kľúčového slova ENUM. Toto sú bežné celé konštanty, ktoré sú jedinečné a vhodné na použitie označenia sú pripisované. Príklady: ENUM (jeden \u003d 1, dva \u003d 2, tri \u003d 3, štyri \u003d 4);

enum (nula, jeden, dva, tri) - ak pri definovaní uvedených konštánt opomenúť znaky \u003d a numerické hodnoty, potom sa hodnoty pripisujú predvolenému nastaveniu. V tomto prípade dostane veľmi ľavý identifikátor hodnotou 0, a každý nasledujúci sa zvýši o 1.

enum (desať \u003d 10, tri \u003d 3, štyri, päť, šesť);

enum (nedeľa, pondelok, utorok, stredu, štvrtok, piatok, sobota);

Symbolické konštanty sú jedno alebo dva znaky uzavreté v apostrofes. Symbolické konštanty pozostávajúce z jedného symbolu majú typ char a zaberajú jeden bajt v pamäti, znakové konštanty pozostávajúce z dvoch znakov majú typ int a zaberajú dva bajty. Sekvencie začínajúce znakom sa nazývajú manažéri, používajú sa:

- reprezentovať znaky, ktoré nemajú grafický displej, napríklad:

A - pípnutie,

B - Vráťte jeden krok,

n - preklad riadkov,

T - Horizontálna karta.

- Pre prezentáciu znakov:, ',? "(\\ ', \\').

- reprezentovať znaky s hexadecimálnymi alebo okomálnymi kódmi (\\ 073, \\ 0XF5).

Konštanta reťazca je sekvencia znakov uzavretých v citáciách. Vnútri riadkov môže tiež použiť ovládacie znaky. Napríklad: "noving reťazec",

"N" algoritmické jazyky programovania na vysokej úrovni "".

Typy údajov v C ++

Údaje sa zobrazujú v programe na celom svete. Cieľom programu je spracovávať údaje. Údaje rôzne typy sú uložené a spracované rôznymi spôsobmi. Typ údajov určuje:

1) interné zobrazenie údajov v pamäti počítača;

2) veľa hodnôt, ktoré môžu mať hodnoty tohto typu;

3) Operácie a funkcie, ktoré možno aplikovať na údaje tohto typu.

V závislosti od požiadaviek úlohy programovača vyberie typ pre programové objekty. Typy C ++ môžu byť rozdelené do jednoduchého a kompozitu. Jednoduché typy zahŕňajú typy, ktoré sú charakterizované jednou hodnotou. V C ++ je definovaných 6 jednoduchých typov údajov:

Existujú 4 špecifikátory typu špecifikujúce interné zobrazenie a rozsah štandardných typov

krátke (krátke)

dlhé (dlhé)

podpísané (znamenie)

nepodpísané (nepozorované)

Typint.

Hodnoty tohto typu sú celé čísla.

Veľkosť typu INT nie je určená štandardom, ale závisí od počítača a kompilátorov. Pre 16-bitový procesor, 2 bajty sú priradené k nemu, pre 32-bitové-4 bajtov.

Ak stručný špecifikátor stoja pred int, potom sú 2 bajty uvedené na číslo, a ak dlhý špecifikátor, potom 4 bajty. Z čísla priradeného na pamäťový objekt závisí od mnohých platných hodnôt, ktoré môžu dostať objekt:

krátky int - zaberá 2 bajty, preto má rad -32768 .. + 32767;

dlhé Int - Ranky 4 Bytes, preto má rad -2 147 483 648 .. + 2 147 483 647

Typ INT sa zhoduje s krátkym typom Int na 16-bitové počítače a s dlhou int 32-bitový počítač.

Podpísané a nepodpísané modifikátory tiež ovplyvňujú súbor prípustných hodnôt, ktoré objekt môže mať:

nepodpísaný krátky int - zaberá 2 bajty, preto má rad 0 ..65536;

usporiadaný dlhý Int - Ranky 4 Bytes, preto má rad 0 .. + 4 294 967 295.

Typchar.

Hodnoty tohto typu sú prvky konečného usporiadaného súboru znakov. Každý znak je vložený v súlade s číslom, ktoré sa nazýva kód symbolu. Pod veľkosti bajtu typu 1 je uvedený. Typ char môže byť použitý s podpísanými a nepodpísanými špecifikátormi. V týchto podpísaných typoch znakov môžete ukladať hodnoty v rozsahu od -128 do 127. Pri použití typu nepodpísaného znaku môžu byť hodnoty v rozsahu od 0 do 255. Kód ASCII sa používa na kódovanie ( Americký štandardný kód FOE International Interchange). Symboly s kódmi od 0 do 31 sú služby a majú nezávislú hodnotu len v I / O vyhlásenia.

Hodnoty typu char sa používajú aj na ukladanie čísel zo zadaných rozsahov.

TypwCHCH_t.

Navrhnuté tak, aby pracovali s množstvom znakov pre kódovanie, ktoré nestačí o 1 bajt, ako napríklad Unicode. Veľkosť tohto typu spravidla zodpovedá typu krátkeho. Konštanty reťazca tohto typu sa zaznamenávajú s prefixom l: l "reťazec # 1".

Typbool

Typ bool sa nazýva logický. Jeho hodnoty môžu mať pravé a nepravdivé hodnoty. Vnútorná forma reprezentácie false je 0, ktorákoľvek iná hodnota sa interpretuje ako pravdivá.

Plávajúce typy.

Vnútorné zastúpenie reálneho čísla sa skladá z 2 častí: Mantissa a objednávky. V počítači kompatibilnom s IBM je veľkosť typu plaváka obsadená 4 bajtami, z ktorých jeden výtok sa prijíma pod znakom mantisy, 8 vypúšťacích výbojov podľa objednávky a 24 - pod mantissou.

Hodnoty typu dvojitého obsadenia 8 bajtov, 11 a 52 vypúšťania sa vypúšťajú pod rádu a mantissa. Dĺžka mantisy určuje presnosť čísla a dĺžku jej rozsahu.

Ak sa nachádza dlhý špecifikátor pred dvojitým typom, potom bajty sú uvedené pod veľkosťou.

Typneplatný.

Hlavné typy zahŕňajú aj typ prázdny typ tohto typu - prázdny.

Premenné

Premenná v C ++ je pomenovaná pamäťová oblasť, v ktorej sú údaje uložené. Premenná má názov a hodnotu. Názov slúži na označenie pamäte, v ktorom je hodnota uložená. Pred použitím musí byť opísaná akákoľvek premenná. PRÍKLADY:

Všeobecný pohľad na opis popisu:

[Trieda pamäte] Zadajte názov [Inicializer];

Trieda pamäte môže mať hodnoty: Auto, Extern, Static, Registrácia. Trieda pamäte určuje životnosť a rozsah premennej. Ak sa trieda pamäti nie je explicitne špecifikovaná, kompilátor určuje na základe kontextu reklamy. Život môže byť trvalý - počas realizácie programu alebo dočasného - počas bloku. Rozsah - Časť textu programu, z ktorej predpokladáme obvyklý prístup k premennej. Zvyčajne sa rozsah viditeľnosti zhoduje s oblasťou činnosti. Okrem toho, prípad, keď existuje premenná vo vnútornom bloku s rovnakým názvom.

Const - označuje, že táto premenná nemôže byť zmenená (pomenovaná konštanta).

Keď opíšete, môžete priradiť počiatočnú premennú hodnotu (inicializácia).

Triedy pamäte:

auto -Automatická lokálna premenná. Auto špecifikátor môže byť špecifikovaný len pri určovaní blokových objektov, napríklad v tele funkcie. Táto premenná pamäť sa uvoľní na vstup do jednotky a je uvoľnený pri opustení. Mimo bloku, takéto premenné neexistujú.

externá je globálna premenná, je na inom mieste programu (v inom súbore alebo podiele v texte). Používa na vytvorenie premenných, ktoré sú dostupné vo všetkých programových súboroch.

statická je statická premenná, existuje len v medziach súboru, kde je premenná definovaná.

register je podobný Auto, ale pamäť je pridelená v registroch procesorov. Ak nie je takáto možnosť, premenné sú spracované ako auto.

Int a; // globálna premenná prázdnota () (INT B; // Miestna premenná externá INT X; // Premenná X je definovaná inde statická int c; // lokálna statická premenná A \u003d 1; // Priradenie globálnej premennej int A; / / Miestna premenná AA \u003d 2; // Priradenie lokálnej premennej :: A \u003d 3; // Priradenie globálnej premennej) Int x \u003d 4; // Definícia a inicializácia X

V tomto príklade je premenná A určená mimo všetkých blokov. Akčná oblasť variabilného A je celý program, s výnimkou tých riadkov, kde sa používa lokálna premenná A. Premenné B a C - Miestne, oblasť ich viditeľnosti je blok. Životná životnosť: Pamäť pod B sa uvoľní pri vstupe do bloku (odvzdušňovače, trieda Auto pamäte) sa uvoľní pri opustení. Kým program funguje, existuje premenná (statická).

Ak pri určovaní počiatočnej hodnoty nie sú premenné explicitne špecifikované, potom kompilátor resetuje globálne a statické premenné. Automatické premenné nie sú inicializované.

Názov premennej by mal byť jedinečný vo svojej oblasti činnosti.

Opis premennej je možné dokončiť alebo ako reklama alebo ako definíciu. Reklama obsahuje informácie o triede pamäti a typu premennej, definície spolu s týmito informáciami dáva indikáciu na pridelenie pamäte. V príklade externého int X; - Oznámenie a zvyšné definície.

Operačné značky SI / +

Známky operácií zabezpečujú vytvorenie výrazov. Výrazy sa skladajú z operandov, príznakov operácií a zátvoriek. Každý operand je na druhej strane výraz alebo súkromný prípad výrazov konštantný alebo premenlivý.

UNARY Operations

& získanie operačného adresy
* Odvolanie na adresu (rozsah)
unly mínus, zmení znak aritmetického operandu
~ diskontinuálne odvzdušnenie vnútorného binárneho kódu celé číslo operandu (bitové zamietnutie)
! logické odmietnutie (nie). Ako logické hodnoty, 0 - false a nie 0 - pravda, odmietnutie 0 bude 1, popieranie akéhokoľvek nulového čísla bude 0.
++ Zvýšenie jedným:

prefix Prefix - zvyšuje operand na jeho použitie,

prevádzka postfix zvyšuje operand po jeho používaní.

int a \u003d (m ++) + n; // a \u003d 4, m \u003d 2, n \u003d 2

int b \u003d m + (++ n); // a \u003d 3, m \u003d 1, n \u003d 3

— — zníženie na jednotku:

prefix Prefix - znižuje operandy pred použitím,

prevádzka postfixu znižuje operand po jeho používaní.

veľkosť. výpočet veľkosti (v bajtoch) pre predmet tohto typu, ktorý má operand

má dve formy

veľkosť výrazu

sITEF (FLOUND) // 4

sITEF (1.0) // 8, pretože predvolené skutočné konštanty majú typ dvojitého

Binárne operácie.

Aditívum:

Multiplicative:

Operácie ship (definované len pre celé operandy).

Formát expresie so operáciou zmeny:

operand_shel operand operand operand

Číslivá operácia:

Porovnanie Operácie: Výsledok je TRUE (nie 0) alebo FALSE (0)

Logické binárne operácie:

Operácie priradenia

Atď.

Formát operácie Jednoduchá úloha:

operand1 \u003d operand2

Hodnota ľavostrannej hodnoty (hodnota L) je výraz, ktorý sa zaoberá určitou časťou pamäte, t.j. Môže sa k nemu pridať. Toto meno sa stalo z operácie priradenia, pretože ľavá časť operácie priradenia je určená, ktorá prevádzka operácie bude zadaná do akej oblasti pamäte. Premenná je špeciálny prípad lesavých výrazov.

Podmienečná prevádzka.

Na rozdiel od unových a binárnych operácií používa tri operandy.

Expression1? Expression2: Expression3;

Prvá je hodnota výrazu1. Ak je to pravda, vypočíta sa hodnota výrazu2, ktorá sa stáva výsledkom. Ak sa pri výpočte výrazu1 vypne 0, potom sa výsledkom je výsledok.

Napríklad:

x.<0 ? -x: x ; //вычисляется абсолютное значение x.

Prevádzka explicitného (konverzie) typu typu.

Existujú dve formy: kanonické a funkčné:

1) (meno) operand

2) type_name (operand)

(int) a // kanonická forma

int (A) // Funkčný formulár

Výrazy

Z konštantantov, premenných, separátorov a operácií operácií môžu byť navrhovanie výrazov. Každý výraz je pravidlom výpočtu novej hodnoty .. Ak výraz generuje celé číslo alebo reálne číslo, potom sa nazýva aritmetika. Pár aritmetických výrazov v kombinácii s porovnávacou operáciou sa nazýva postoj. Ak má pomer nenulová hodnota, potom je to pravda, inak - FALSE.

Priority operácií v výrazoch

Hodnosť Operácie
1 () -> .
2 ! ~ - ++ - & * (typ) SIZEOF TYPER ()
3 * /% (multiplikatívne binárne)
+ - (aditívne binárne)
5 << >\u003e (Bonnetický posun)
6 < > <= >\u003d (Vzťah)
7 \u003d\u003d! \u003d (Vzťah)
8 & (spájanie spojenia "a")
9 ^ (Obrázok bez "alebo")
10 | (Diajunkcia "alebo")
11 && (spojenie "a")
12 || (disjunkcia "alebo")
13 ?: (podmienená prevádzka)
14 = *= /= %= -= &= ^= |= <<= >\u003e \u003d (operácia priradenia)
15 , (prevádzka čiarky)

Posledná aktualizácia: 06/19/2017

Samostatný súbor operácií je podmienené výrazy. Takéto operácie vrátia logickú hodnotu, to znamená, že hodnota typu BOOL: TRUE, ak je výraz skutočne, a false, ak je výraz false. Takéto operácie zahŕňajú porovnanie a logické operácie.

Operácie porovnania

V porovnávacích operáciách sa porovnávajú dve operandy a hodnota typu bool je pravdivá, ak je výraz true, a false, ak je výraz nesprávny.

    Porovnajte dve operandy pre rovnosť. Ak sú rovnaké, operácia sa vracia true, ak nie je rovná, potom sa vráti false:

    B; // FALSE

    Porovnajte dve operandy a vráti TRUE, ak operandy nie sú rovnaké a nepravdivé, ak sú rovnaké.

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a! \u003d B; // pravda bool d \u003d A! \u003d 10; // FALSE

    Prevádzka "menej ako". Vracia TRUE, ak je prvý operand menší ako druhý a FALSE, ak je prvý operand väčší ako druhý:

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a< b; // false

    Prevádzka "viac ako". Porovnajte dve operandy a vráti TRUE, ak je prvý operand viac ako druhý, inak sa vracia FALSE:

    Int a \u003d 10; int b \u003d 4; Bool c \u003d A\u003e B; // pravda bool d \u003d A\u003e 25; // FALSE

    Prevádzka "menej alebo rovná". Porovnáva dve operandy a vráti TRUE, ak je prvý operand menší alebo rovný druhému. Inak vráti false.

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a<= b; // false bool d = a <= 25; // true

    Operácie "väčšia alebo rovná." Porovnajte dva operandy a vráti TRUE, ak je prvý operand väčší alebo rovný druhému, inak sa vráti false:

    Int a \u003d 10; int b \u003d 4; Bool c \u003d a\u003e \u003d b; // pravda bool d \u003d A\u003e \u003d 25; // FALSE

Operácie<, > <=, >\u003d mať väčšiu prioritu ako \u003d\u003d a! \u003d.

Logické operácie

Tiež v C # definovaných logických operátorov, ktoré tiež vrátia hodnotu typu boolu. Ako operands, berú hodnotu boolu. Spravidla sa vzťahujú na vzťahy a kombinovať niekoľko porovnávacích operácií.

    Prevádzkovanie logického pridávania alebo logického alebo. Vracia TRUE, ak sa aspoň jeden z operandov vráti pravdivý.

    Bool x1 \u003d (5\u003e 6) (štyri< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x2 = (5 > 6) (4\u003e 6); // 5\u003e 6 - FALSE, 4\u003e

    PREVÁDZKA LOGICKÉHO MOUTIMPLIKÁCIE ALEBO LOGICKÉHO I. Vracia TRUE, ak sú obe operandy súčasne rovnaké.

    Bool x1 \u003d (5\u003e 6) & (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается false bool x2 = (5 < 6) & (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true

    Prevádzka logického pridávania. Vracia TRUE, ak sa aspoň jeden z operandov vráti pravdivý.

    Bool x1 \u003d (5\u003e 6) || (štyri< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x2 = (5 > 6) || (4\u003e 6); // 5\u003e 6 - FALSE, 4\u003e 6 \u200b\u200b- FALSE, tak falošné výnosy

    Prevádzka logického násobenia. Vracia TRUE, ak obe operandy sú v rovnakom čase pravdivé.

    Bool x1 \u003d (5\u003e 6) && (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается false bool x2 = (5 < 6) && (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true

    Prevádzka logického popierania. Vykonáva sa nad jedným operandom a vráti TRUE, ak je operand false. Ak je operand pravdivý, operácia vráti false:

    Bool a \u003d true; Bool b \u003d! A; // FALSE

    Prevádzka s výnimkou Or. Vráti TRUE, ak je to prvý alebo druhý operand (ale nie v rovnakom čase), sú pravdivé, inak sa vracia falošné

    Bool x5 \u003d (5\u003e 6) ^ (4< 6); // 5 > 6 - FALSE, 4< 6 - true, поэтому возвращается true bool x6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - TRUE, 4/2< 3 - true, поэтому возвращается false

Tu máme dva páry operácií a || (ako aj &&) vykonávať podobné akcie, ale nie sú ekvivalentné.

V vyjadrení z \u003d x | y; Obe hodnoty sa vypočítajú - x a y.

V vyjadrení z \u003d x || y; Po prvé, hodnota X bude najprv vypočítaná, a ak je to pravda, výpočet hodnoty Y nedáva zmysel, pretože v každom prípade z bude rovná pravdivej. Hodnota Y bude vypočítaná len vtedy, ak je X rovná FALSE

To isté platí pre pár operácií & /&. V vyjadrení z \u003d x sa vypočítajú obe hodnoty - X a Y.

V vyjadrení Z \u003d X a bude sa najprv vypočítať X, a ak sa rovná FALSE, výpočet hodnoty Y nedáva zmysel, pretože v každom prípade sa Z bude rovná falošným. Hodnota y sa vypočíta len vtedy, ak X je pravdivá

Preto operácie || a && sú pohodlnejšie vo výpočtoch, pretože vám umožní skrátiť čas na výpočet hodnoty výrazu, a tým zvýšiť produktivitu. A operácie a & sú vhodnejšie na vykonanie operácií Bidlingu nad číslami.

Prevádzkovatelia a logickí operátori

V notácii prevádzkovateľ vzťahu a logický operátor termín vzťah znamená vzťah, ktorý môže existovať medzi dvoma hodnotami a termínom logický - vzťah medzi logickými hodnotami "pravdy" a "lož". A keďže prevádzkovatelia vzťahu poskytujú pravdivé alebo nepravdivé výsledky, často sa používajú spolu s logickými operátormi. Je z tohto dôvodu, že sa považujú za spoločne.

Nižšie sú prevádzkovatelia vzťahov:

Logické zahŕňajú operátori nižšie:

Výsledkom vykonávania prevádzkovateľa vzťahu alebo logického operátora je logická hodnota typu boolu.

Všeobecne platí, že objekty môžu byť porovnané s rovnosťou alebo nerovnosťou s použitím prevádzkovateľov vzťahov \u003d\u003d a! \u003d. A porovnávacie operátory, \u003d môžu byť použité len na typy údajov, ktoré podporujú pomer objednávky. V dôsledku toho môžu byť relačníky aplikovať na všetky typy číselných údajov. Hodnoty typu boolu sa však môžu porovnať len s rovnosťou alebo nerovnosťou, pretože pravdivé (true) a falošné (falošné) hodnoty nie sú objednané. Napríklad porovnanie TRUE\u003e FALSE IN C # nedáva zmysel.

Zvážte príklad programu, ktorý preukazuje využívanie vzťahov a logických operátorov:

Pomocou systému; pomocou systému.collections.genic; Pomocou systému.Linq; Pomocou systému.Text; Názov mespace ConzoleApplication1 (String Args (String Vid D \u003d 10, F \u003d 12; BOOL VAR1 \u003d TRUE, VAR2 \u003d FALSE; IF (DF) Console.writeline ("D\u003e F"); // Porovnanie premenných VAR1 a VAR2, ak (var1) & VAR2) Console.writeline ("Tento text nebude vypnúť"); ak (! (VAR1 & VAR2)) Console.writeline ("! (VAR1 & VAR2) \u003d TRUE"); IF (VAR1 | VAR2) Console.writeline ("Var1 | var2 \u003d true"); ak (var1 ^ var2) konzola.writeline ("var1 ^ var2 \u003d true"); konzola.Readline ();)))

Logické operátori v C # vykonávajú najčastejšie logické operácie. Existuje však niekoľko operácií vykonávaných pravidlami formálnej logiky. Tieto logické operácie môžu byť postavené pomocou logických operátorov podporovaných v C #. V dôsledku toho, v C # existuje takáto súbor logických operátorov, ktorá je dostatočná na vytvorenie takmer akejkoľvek logickej operácie vrátane dôsledkov. Amplikácia - Toto je binárna činnosť, výsledkom, ktorý je falošná hodnota, len ak jeho ľavá operand má skutočný význam a ten správny je nepravdivý. (Implikačná prevádzka odráža nasledujúcu zásadu: Pravda nemôže znamenať lož.)

Protivácia operácia môže byť postavená na základe kombinácie logických operátorov! a |:

Skrátené logické operátory

C # má tiež špeciálne, skrátenie, možnosti logických operátorov a alebo, určené na získanie efektívnejšieho kódu. Vysvetlime v nasledujúcich príkladoch logických operácií. Ak prvý operand logickej operácie a má falošnú hodnotu (FALSE), potom jeho výsledok bude mať falošnú hodnotu bez ohľadu na hodnotu druhého operandu. Ak prvý operand logickej operácie alebo má skutočnú hodnotu (true), potom bude mať jeho výsledok skutočnú hodnotu bez ohľadu na hodnotu druhého operandu. Vzhľadom na skutočnosť, že hodnota druhého operandu v týchto operáciách sa nemusí vypočítať, \\ t Šetrí čas a zvyšuje účinnosť kódu.

Skrátená logická operácia a vykonáva sa pomocou operátora &&a skrátená logická operácia alebo - s operátor ||. Tieto skrátené logické operátori zodpovedajú bežným logickým operátorom a |. Jediný rozdiel medzi skráteným logickým operátorom z obvyklých lží v skutočnosti, že jeho druhý operand sa vypočíta len podľa potreby.

Akákoľvek expresia jazyka sa skladá z operandov (premenných, konštanty atď.) Súvisia s príznakmi operácií. Operation Sign je symbolom alebo skupinou znakov, ktoré vykazujú kompilátor o potrebe vykonávať určité aritmetické, logické alebo iné akcie.

Operácie sa vykonávajú v prísnej sekvencii. Prioritu sa nazýva hodnota, ktorá určuje právo preventívneho práva na vykonanie konkrétnej operácie. V Tab. 2 Uvedené rôzne operácie jazyka SI (C). Ich priority pre každú skupinu sú rovnaké (skupiny sú zvýraznené vo farbe). Čím väčšia výhoda sa používa zodpovedajúca skupina operácií, tým vyššie sa nachádza v tabuľke. Postup vykonávania operácií môže byť regulovaný pomocou zátvoriek.

Tabuľka 2 - Operácie

Znamenie prevádzky

Účel prevádzky

Funkcia hovoru

Prideľovanie prvku poľa

Výber vstupného prvku

Výber vstupného prvku

Logický popier

Digitálny odmietnutie

Zmena znaku

Rovnosť na jednotku

Zníženie jednotkou

Adresa

Odvolanie na adresu

Typ konverzie (t.j. (plavák) a)

Určenie veľkosti v bajtoch

Násobenie

Stanovenie zostatku

Pridávanie

Odčítanie

Posun doľava

Posunúť doprava

Menej ako

Menej alebo rovné

Viac ako

Viac alebo rovné

Úverové logické "a"

Číslica s výnimkou "alebo"

Úverové logické "alebo"

Logické "a"

Logické "alebo"

Podmienená prevádzka (TERNAR)

Priradenie

+=, - =, *=, /=, %=, <<=,
>>=, &=, |=, ^=

Binárne operácie (napríklad A * \u003d B
(t.j. a \u003d a * b) atď.)

Prevádzková čiarka

Operátor v SI (C)

Na vylúčenie zmätku v konceptoch "operácie" a "operátora", všimnite si, že prevádzkovateľ je najmenšou spustiteľnou jednotkou programu. Expresné operátori sa rozlišujú, že pôsobenie spočíva v výpočte špecifikovaných výrazov (napríklad: A \u003d SIN (B) + C; J ++;), AD prevádzkovateľov, kompozitných operátorov, prázdnych operátorov, prevádzkovateľov štítkov, cyklus atď. . Ak chcete odkazovať na koniec operátora v jazyku SI (C), sa používa bod. Pokiaľ ide o kompozitný operátor (alebo blok), ktorý je sada logicky príbuzných operátorov umiestnených medzi otvormi (() a zatváraním ()) kučeravými konzolami ("obslužné držiaky"), potom bod s čiarkou nie je uvedený. Všimnite si, že blok sa líši od kompozitného operátora prítomnosťou definícií v tele bloku.

Charakteristika hlavných operácií jazyka SI (C)

Chareatujeme základné operácie jazyka SI (C).

Operácia priradenia

Po prvé, zvážte jeden z nich - operácia priradenia (\u003d). Vyjadrenie typu

priradí variabilnú hodnotu X premennej Y. Prevádzka "\u003d" je dovolené použiť viackrát v jednom výraze, napríklad:

x \u003d y \u003d z \u003d 100;

Rozlišovať unové a binárne operácie. V prvom z nich, jeden operand a druhý - dva. Začnime ich zváženie operácií súvisiacich s prvou z týchto tradičných skupín:

Aritmetické operácie.

Logické operácie a vzťahy vzťahov.

Operácie s bitmi.

Aritmetické operácie sú nastavené nasledujúcimi symbolmi (tabuľka 2): +, -, *, /,%. Posledný nie je možné aplikovať na premennú reálneho typu. Napríklad:

a \u003d B + C;
x \u003d y - z;
R \u003d T * V;
s \u003d k / l;
P \u003d q% w;

Logické operácie

Operácie logického vzťahu sú nastavené nasledujúcimi symbolmi (pozri tabuľku 2): && ("a"), || ("Alebo") ,! ("Nie"),\u003e,\u003e \u003d,<, <= , = = (равно), != (не равно). Традиционно эти операции должны давать одно из двух значений: истину или ложь. В языке СИ (C)принято следующее правило: истина - это любое ненулевое значение; ложь - это нулевое значение. Выражения, использующие логические операции и операции отношения, возвращают 0 для ложного значения и 1 для истинного. Ниже приводится таблица истинности для логических операций.

Bitové operácie môžu byť aplikované na premenné, ktoré majú Int, typy char, ako aj ich varianty (napríklad dlhý int). Nemôžu byť aplikované na variabilné typy plavák, dvojité, neplatné (alebo viac zložitých typov). Tieto operácie sú stanovené nasledujúcimi symbolmi: ~ (Bonneálny popieranie),<< (сдвиг влево), >\u003e (posun doprava), & (kapota "a"), ^ (bity bez "alebo"), (Číslice "alebo").

Príklady: Ak A \u003d 0000 1111 a B \u003d 1000 1000, potom

~ A \u003d 1111 0000,
A.<< 1 = 0001 1110,
A \u003e\u003e 1 \u003d 0000 0111,
A & B \u003d 0000 1000,
a ^ b \u003d 1000 0111,
A | B \u003d 1000 1111.

Jazyk poskytuje dve netradičné prírastkové operácie (++) a znižovanie (-). Sú určené na zvýšenie a zníženie hodnoty operandu. Prevádzka ++ a - môže byť zaznamenané ako pred operandom a po ňom. V prvom prípade (++ N alebo -N) sa hodnota operand (N) zmení pred použitím v príslušnej expresii av druhej (N ++ alebo N-) - po jeho použití. Zvážte nasledujúce dva riadky programu:

a \u003d B + C ++;
A1 \u003d B1 +++ C1;

Predpokladajme, že B \u003d B1 \u003d 2, C \u003d C1 \u003d 4. Potom po vykonaní operácií: A \u003d 6, B \u003d 2, C \u003d 5, A1 \u003d 7, B1 \u003d 2, C1 \u003d 5.

Výrazy s inou netradičnou ternárnou alebo podmieňovacou prevádzkou sú rozšírené. Vo vzorci

y \u003d A, ak X nie je nula (t.j. TRUE) a Y \u003d B, ak X je nula (FALSE). Ďalší výraz

y \u003d (a\u003e b)? A: B;

umožňuje priradiť premennú v hodnote väčšej premennej (A alebo B), t.j. y \u003d max (a, b).

Ďalším rozlíšením jazyka je, že expresia formy A \u003d A + 5; môže byť napísaný v inom formulári: A + \u003d 5; Namiesto znaku + môžete použiť symboly iných binárnych operácií (pozri tabuľku 2).

Ostatné operácie tabuľky. 2 bude opísané v nasledujúcich odsekoch.

Cykly sú organizované na vykonávanie určitého operátora alebo skupiny operátorov určitý počet. V jazyku SI (C), traja prevádzkovatelia cyklov: na, zatiaľ čo a robiť. Prvá z nich je formálne napísaná v nasledujúcom podobe:

pre (expression_1; expression_2; expression_3) body_tsikla

Cyklistické teleso je buď jeden operátor, alebo niekoľko operátorov uzavretých v kučeravých zátvorkách (...) (po blokovom bode s čiarkou nie je umiestnená). V vyjadrení 1, 2, 3 sa zobrazí špeciálna premenná nazývaná kontrola. Jeho hodnota je potrebné zriadiť potrebu opakovania cyklu alebo výstupu.

Expression_1 priradí počiatočnú hodnotu ovládacej premennej, expression_s to zmení v každom kroku a expression_2 kontroluje, či dosiahne hraničnú hodnotu, ktorá stanovuje potrebu ukončiť cyklus.

pre (i \u003d 1; i< 10; i++)

pre (Сh \u003d "A"; CH! \u003d "p";) SCANF ("% C", & CH);

/ * Cyklus bude vykonaný až do klávesnice

symbol "P" * /

Každý z troch výrazov v cykle môže byť neprítomný, avšak bod so čiarkou by mal zostať. Tak, pre (;;) (...) je nekonečný cyklus, z ktorého môžete opustiť len inými spôsobmi.

V jazyku SI (c) sa prijíma toto pravidlo. Akákoľvek expresia s operáciou priradenia uzavretej v zátvorkách sa rovná pridelenej. Expresia (A \u003d 7 + 2) je napríklad 9. Potom môžete napísať ďalší výraz, napríklad: ((A \u003d 7 + 2)<10), которое в данном случае будет всегда давать истинное значение. Следующая конструкция:

((Sh \u003d getch ()) \u003d\u003d "I")

umožňuje zadať hodnotu premennej CH a poskytnúť skutočný výsledok len vtedy, keď je zadaná hodnota písmeno "I". V zátvorkách môžete nahrávať niekoľko vzorcov, ktoré tvoria komplexný výraz. Na tieto účely sa používa činnosť čiarky. Formulára budú vypočítané zľava doprava a všetok výraz bude mať hodnotu posledného vypočítaného vzorca. Napríklad, ak existujú dve premenné typu znak, potom výraz

z \u003d (x \u003d y, y \u003d getch ());

definuje nasledujúce akcie: hodnota premennej Y je priradená premennej X; Symbol z klávesnice sa zavádza a priraďuje k premennej Y; Z získava hodnotu premennej y. Konzoly sú potrebné tu, pretože prevádzka čiarky má nižšiu prioritu ako operácia priradenia zaznamenanej po premennej Z. Prevádzka čiarky sa široko používa na vybudovanie výrazov cyklu a umožňuje súčasne zmeniť hodnoty niekoľkých kontrolných premenných.

Investované štruktúry sú povolené, t.j. V tele určitého cyklu sa môžu vyskytnúť iné pre operátorov.

Zatiaľ čo vyhlásenie je formálne napísané v tomto formulári:

kým (výraz) body_tsikla

Výraz v zátvorkách môže mať nenulovú (true) alebo nulu (falošnú) hodnotu. Ak je to skutočne, cyklus sa vykonáva a expresia sa opäť vypočíta. Ak je výraz false, potom počas koncov cyklu.

Vyhlásenie do-zatiaľ čo je formálne napísané takto:

robiť (body_cyklla), zatiaľ čo (výraz);

Hlavný rozdiel medzi tým, zatiaľ čo cykly je, že telo v DO - zatiaľ čo cyklus sa vykonáva aspoň raz. Cyklistické teleso sa vykoná, kým výraz v zátvorkách nebude mať falošnú hodnotu. Ak je pri vstupe do cyklu nepravdivé, jeho telo sa vykonáva presne raz.

Hniezdenie niektorých cyklov do iných je povolené, t.j. V tele každého cyklu, operátori, zatiaľ čo a robiť - zatiaľ čo sa môžu objaviť.

V tele cyklu môžu byť použité nové prestávky a pokračovať prevádzkovateľov. Prevádzkovateľ prerušenia poskytuje okamžitý výstup z cyklu, pokračujúci prevádzkovateľ spôsobuje ukončenie nasledujúceho a začiatku nasledujúcej iterácie.

Podmienečné a bezpodmienečné prechodné prevádzkovatelia

Na usporiadanie podmienených a bezpodmienečných prechodov v programe SI (C) sa používajú operátori: ak - inak, prepínač a goto. Prvá je napísaná takto:

ak (check_linking) operátor_1; Inak operátor_2;

Ak stav v zátvorkách má skutočnú hodnotu, operátor_1 sa vykonáva, ak je falošný operátor_2. Ak namiesto toho potrebujete vykonať niekoľko operátorov, potom sú kučeravé rovnátka. V prípade vyhlásenia, slovo iným môže byť neprítomné.

V IF inde vyhlásenie priamo po kľúčových slovách, ktoré i ostatné musia nasledovať ostatným operátorom. Ak je aspoň jeden z nich, ak je operátor, nazýva sa investovaný. Podľa dohody prijatej v dohode SI (c) sa slovo iní vždy vzťahuje na najbližšie, ak pred ním.

Prevádzkovateľ prepínača vám umožňuje vybrať jednu z niekoľkých alternatív. Je napísaný v nasledujúcej forme:

prepínač (výraz)

case constanta_1: operátori_1;

cASE CONSTANTA_2: Operátori_2;

........ ........

predvolené: operátory_default;

Vypočíta sa tu hodnota celého výrazu v zátvorkách (niekedy sa volá volič) a porovnáva sa so všetkými konštantami (konštantné výrazy). Všetky konštanty musia byť odlišné. Pri zhode sa vykonáva vhodná verzia operátorov (jeden alebo viac operátorov). Možnosť s predvolenými predvolenými slovami je implementovaná, ak sa žiadna iná priblížila (predvolené slovo môže chýbať). Ak je predvolené neprítomné, a všetky výsledky porovnania sú negatívne, potom sa nevykonáva žiadna možnosť.

Ak chcete zastaviť následné kontroly po úspešnej voľbe určitej voľby, používa sa operátor prerušenia, ktorý poskytuje okamžitý výstup z prepínača spínača.

Investované návrhy.

Zvážte pravidlá pre vykonávanie bezpodmienečného prechodu, ktorý možno predložiť v nasledujúcom formulári: \\ t

goto štítok;

Štítok je akýkoľvek identifikátor, po ktorom je hrubé črevo doručené. Prevádzkovateľ GOTO naznačuje, že program musí pokračovať od operátora, pred ktorým sa označenie zaznamenáva. Štítok môže byť umiestnený pred ľubovoľným operátorom vo funkcii, kde to spoločnosť GOTO zodpovedá. Nemalo by to byť oznámené.

Turbo Debugger plne podporuje syntax výrazov výrazov SI (C). Výraz sa skladá zo zmesi operácií, reťazcov, premenných



Páči sa vám článok? Zdieľaj to