1. Boolovské hodnoty, operácie, výrazy. Boolovské výrazy ako podmienky v algoritmoch vetvenia a cyklovania.

Aby ste pochopili, ako fungujú vetviace a cyklické algoritmy, pouvažujte nad konceptom logického výrazu.

V niektorých prípadoch by výber voľby v programe mal závisieť od toho, ako navzájom súvisia hodnoty niektorých premenných.

Napríklad výpočet koreňov kvadratickej rovnice sa robí rôzne v závislosti od diskriminátora (pamätajte na matematiku).

Výsledkom porovnania hodnôt dvoch výrazov sú možné dve možné odpovede: porovnanie veru alebo falošne?

Napríklad:

2 + 3\u003e 3 + 1 - áno (pravda)

0 < -5 - нет (ложно)

Budeme nazývať výrazy tohto druhu logické výrazy.

Logický výraz, podobne ako matematický výraz, sa vykoná (vyhodnotí), ale výsledkom nie je číslo, ale logická hodnota: true alebo false. Logická hodnotaje vždy odpoveďou na otázku, či je dané tvrdenie pravdivé.

Poznáme šesť porovnávacích operácií:

Pomocou týchto operácií budeme skladať logické výrazy. Okrem toho výrazy nemusia nevyhnutne obsahovať iba konštanty, ale aj premenné.

To, ako sa vykonávajú relačné operácie pre číselné hodnoty, je zrejmé z matematiky. Ako sa porovnávajú symbolické hodnoty? Rovná sa rovná dvom hodnotám znakov, ak sú ich dĺžky rovnaké a všetky zodpovedajúce znaky sa zhodujú. Upozorňujeme, že medzera je tiež symbolom.

Symbolické hodnoty je možné porovnávať aj vo vzťahoch\u003e,<, >=, <=. Здесь упорядоченность слов (последовательности символов) определяется по алфавитному принципу.

„Mačka“ \u003d „mačka“

„mačka“< «лис»

„Mačka“\u003e „domov“

Výraz pozostávajúci z jednej logickej hodnoty alebo jedného vzťahu sa bude nazývať jednoduchý logický výraz.

Často sa vyskytujú problémy, pri ktorých sa nepoužívajú samostatné podmienky, ale súbor súvisiacich podmienok (vzťahov). Napríklad v obchode musíte zvoliť topánky, ktorých veľkosť je r \u003d 45, farba \u003d biela, cena cena nie je väčšia ako 400 rubľov.

Iný príklad: študent zistil, že si môže kúpiť čokoládovú tyčinku, ak to stojí 3 ruble. alebo 3 ruble. 50kop.

V prvom príklade máme do činenia s tromi vzťahmi spojenými spojkou „a“ a časticou „nie“, v druhom - s dvoma vzťahmi spojenými spojkou „alebo“. Zavoláme také podmienky zložka, a na ich označenie v algoritme súhlasíme s použitím spojok „ a", "alebo", "nie„, ktoré budeme považovať za znaky logických operácií, ktoré nám umožňujú vytvárať zložené podmienky z jednoduchých podmienok, rovnako ako algebraické výrazy možno vytvárať z jednoduchých premenných a konštánt pomocou znakov +, - atď.

Podmienky našich príkladov v algoritme môžu teda vyzerať takto:

najprv: (r \u003d 45) a (farba \u003d biela) a (nie (cena\u003e 400))

druhý: (cena \u003d 3) alebo (cena \u003d 3,5)

Výraz obsahujúci logické operácie sa bude nazývať komplexný logický výraz.

Spojenie dvoch (alebo viacerých) príkazov do jedného pomocou spojenia „a“ sa nazýva operácia logické násobenie alebo spojka .

Výsledkom logického násobenia (spojky) je pravda, ak sú všetky logické výrazy pravdivé.

Spojenie dvoch (alebo viacerých) príkazov pomocou spojky „alebo“ sa nazýva operácia logický doplnok alebo disjunkcia .

Výsledkom logického sčítania (disjunkcie) je true, ak je splnený aspoň jeden logický výraz.

Pripojenie častice „nie“ k vyhláseniu sa nazýva operácia logická negácia alebo inverzia .

Negácia zmení hodnotu boolovskej hodnoty na opačnú: nie true \u003d false; nienepravda \u003d pravda.

Ak je v zložitom logickom výraze niekoľko logických operácií, potom vyvstáva otázka, v akom poradí ich bude počítač vykonávať. V zostupnom poradí priority sú logické operácie usporiadané v nasledujúcom poradí:

    negácia ( nie);

    spojka ( a);

    disjunkcia ( alebo).

Zátvorky sa dajú použiť v logických výrazoch. Rovnako ako v prípade matematických vzorcov, aj zátvorky ovplyvňujú postupnosť operácií. Ak nie sú uvedené zátvorky, potom sa operácie vykonávajú v poradí podľa priority.

Príklad. Nech a, b, c sú logické hodnoty, ktoré majú nasledujúci význam: a \u003d pravda, b \u003d nepravda, c \u003d pravda. Je potrebné určiť výsledky vyhodnotenia nasledujúcich logických výrazov:

    a a b

    a alebo b

    nie a alebo b

    a a b alebo c

    a alebo b a c

    nie a alebo b a c

    (a alebo b) a (od alebo b)

    nie (a alebo b) a (od alebo b)

    nie (a a b a c)

Vo výsledku dostaneme:

Príklad... Vytvorte algoritmus na výpočet:

Algoritmus Vypočítať x

Štart
vstup (a, c)
if (4 * a - c\u003e \u003d 0) a (a<>0) potom
Štart
x: \u003d root (4 * a - c) / (2 * a)
výstup (x)
koniec
inak
záver („žiadne riešenie“)
koniec

Počítač najskôr skontroluje stav (4 * a - c\u003e \u003d 0) a (a<>0) a ak sa ukáže, že je to pravda, potom vypočítajte x, inak sa zobrazí správa „žiadne riešenie“.

Príklad... Vytvorte algoritmus na výpočet súčtu všetkých čísel od 1 do n.

Algoritmus Výpočet súčtu čísel
premenné a, c, x sú reálne
Štart
vstup (n)
x: \u003d 1
ahoj x Štart
s: \u003d s + x
x: \u003d x +1
koniec
výstup (y)
koniec

Do stavu x

Disciplína zvaná matematická logika priamo súvisí s programovaním. Základom matematickej logiky je algebra logiky alebo výrokový počet. Výrokom sa rozumie akýkoľvek výrok, vo vzťahu ku ktorému je možné jednoznačne povedať, či je pravdivý alebo nepravdivý. Napríklad „Mesiac je satelitom Zeme“ je pravda; „5\u003e 3“ je pravda; „Moskva je hlavným mestom Číny“ je nepravdivé; „1 \u003d 0“ je nepravdivé. Pravda alebo nepravda sú logické hodnoty. Logické významy vyššie uvedených tvrdení sú jednoznačne definované; inými slovami, ich hodnoty sú logické konštanty.

Boolovská hodnota nerovnosti x< 0, где х - переменная, является переменной величиной. В зависимости от значения х оно может быть либо истиной, либо ложью. В связи с этим возникает понятие логической переменной.

V polovici 19. storočia vytvoril základy formálneho aparátu matematickej logiky. Anglický matematik George Boole. Na jeho počesť sa výrokový kalkul nazýva Booleova algebra a logické hodnoty sa nazývajú Boolean.

Jednotlivé príkazy je možné kombinovať do zložených logických vzorcov pomocou logických operácií.

Existujú tri hlavné logické operácie: negácia, spojka (logické násobenie) a disjunkcia (logické sčítanie).

Negačná operácia je v matematickej logike označený symbolom ¬ a číta sa ako častica nie. Toto je jediná operácia.

Napríklad ¬ (x \u003d y) znie „nie (x sa rovná y)“. Výsledok je true, ak x sa nerovná y, a false, ak x sa rovná y. Negácia obráti boolovskú hodnotu.

Operácia spojky je označená znakom & a číta sa ako častica a ... Jedná sa o dvojlôžkovú operáciu. Napríklad (x\u003e 0) & (x< 1) читается «х больше 0 и х меньше 1». Данная логическая формула примет значение истина, если х (0,1), и ложь - в противном случае. Следовательно, результат конъюнкции - истина, если истинны оба операнда. Značka disjunkcie v čítať ako častica alebo. Napríklad (x \u003d 0) v (x \u003d 1) znie „x je 0 alebo x je 1“. Vzorec je pravdivý, ak x je binárna číslica (0 alebo 1). Preto disjunkcia vedie k skutočnosti, ak je splnený aspoň jeden operand.

V Pascale sú logické hodnoty označené servisnými slovami false a true a identifikátor boolovského typu je logický.

Okrem hodnôt (konštánt a premenných) typu boolean, booleovské hodnoty false, true prijímajú výsledky relačných operácií.

Vzťahové operácie (obrázok 18) porovnávajú dva operandy a určujú, či je zodpovedajúci vzťah medzi nimi pravdivý alebo nepravdivý.

Logické operácie sa vykonávajú na boolovských operandoch. Existujú štyri logické operácie: Not - negácia; A - logické násobenie (spojka); Alebo - logické doplnenie (disjunkcia).Okrem týchto troch povinných operácií má Turbo Pascal ešte jednu operáciu - exkluzívne ALEBO ... Jeho znakom je služobné slovo Xor. Je to dvojmiestna operácia, ktorá sa vyhodnotí ako true, ak majú oba operandy odlišné logické hodnoty.

Vzťahové operácie majú najmenšiu prioritu. Preto ak sú operandmi logickej operácie vzťahy, mali by byť uzavreté v zátvorkách. Napríklad nasledujúci logický výraz zodpovedá matematickej nerovnosti 1 ≤ х ≤ 50:

(1<=X) And (X<=50)

Logický výraz je logický vzorec napísaný v programovacom jazyku. Boolovský výraz sa skladá z boolovských operandov spojených boolovskými operáciami a zátvorkami. Logický výraz sa vyhodnotí ako boolovská hodnota (nepravda alebo pravda). Logické operandy môžu byť logické konštanty, premenné, funkcie, relačné operácie. Jeden samostatný boolovský operand je najjednoduchšia forma boolovského výrazu.

Príklady logických výrazov (tu d, b, c sú logické premenné; x, y sú skutočné premenné; k je celočíselná premenná):

Ak d \u003d pravda; b \u003d nepravda; c \u003d pravda; x \u003d 3,0; y \u003d 0,5; k \u003d 5, potom budú výsledky výpočtu nasledovné:

Príklad používa logickú funkciu nepárne (k). Je to funkcia celočíselného argumentu k, ktorý sa vyhodnotí ako true, ak k je nepárne, a false, ak k je párne.

Operátor logického priradenia má štruktúru znázornenú na obr. 19.

Zostavila: E. P. Antonova 2008

Snímka 2

Booleovské hodnoty

Booleovské hodnoty: koncepty vyjadrené slovami: TRUE, FALSE (true, false). V dôsledku toho sa pravdivosť tvrdení vyjadruje prostredníctvom logických hodnôt. Boolovská konštanta: TRUE alebo FALSE Booleovská premenná: symbolická boolovská hodnota. Ak sú A, B, X, Y atď. Variabilné logické hodnoty, znamená to, že môžu nadobúdať iba hodnoty TRUE alebo FALSE. Logický výraz je jednoduchý alebo zložitý výrok. Komplexný príkaz je zostavený z jednoduchých pomocou logických operácií (spojovacích prostriedkov).

Snímka 3

Logické operácie. Spojenie

Spojka (logické násobenie). V ruštine sa vyjadruje spojením I. V matematickej logike sa používajú znaky & alebo / \\. Spojka - dvojitá prevádzka; zapísané v tvare: A / \\ B. Hodnota takéhoto výrazu bude NEPRAVDA, ak je aspoň hodnota jedného z operandov nepravdivá.

Snímka 4

Logické operácie. Disjunkcia

Disjunkcia (logické doplnenie). V ruštine táto spojka zodpovedá únii ALEBO. V matematickej logike sa označuje znakom v. Disjunkcia - dvojitá prevádzka; písané ako: A vB. Hodnota takéhoto výrazu bude TRUE, ak je hodnota aspoň jedného z operandov pravdivá.

Snímka 5

Logické operácie. Negácia

Negácia. V ruštine tento zväzok zodpovedá častici NIE (v niektorých výrokoch sa používa fráza „nie je pravda, že ...“). Negácia je unárna (jedno miesto) operácia; napísané v tvare: ¬A

Snímka 7

Príklad

Zvážte zložité tvrdenie: „Číslo 6 je deliteľné 2 a číslo 6 je deliteľné 3.“ Prezentujte toto tvrdenie ako logický vzorec. Označme A jednoduchým výrokom „číslo 6 je deliteľné 2“ a B jednoduchým výrokom „číslo 6 je deliteľné 3“. Potom je zodpovedajúci logický vzorec: A & B. Je zrejmé, že jeho hodnota je PRAVDA.

Snímka 8

Pravidlá vykonávania logických operácií

  • Snímka 9

    Úloha 1

    Formulujte príkazy v bežnom jazyku pre nasledujúce logické výrazy: 1) (X \u003d 12) a (Y \u003d 12) a (Z \u003d 12); 2) (X °) alebo (Y °); 3) (X x Yo); 4) (X x Y x Z 0).

    Snímka 10

    Problém 2

    Určte hodnotu logického výrazu: nie (X\u003e Z) a nie (X \u003d Y), ak: 1) X \u003d 3, Y \u003d 5, Z \u003d 2; 2) X \u003d 0, Y \u003d 1, Z \u003d 19; 3) X \u003d 5, Y \u003d 0, Z \u003d -8; 4) X \u003d 9, Y \u003d -9, Z \u003d 9.

    Snímka 11

    Problém 3

    Určte hodnoty logických premenných a, b c, d, ak: 1) a a (Mars je planéta) sú pravdivé tvrdenia; 2) ba (Mars - planéta) je nepravdivé tvrdenie; 3) s alebo (Slnko je satelitom Zeme) - pravdivé tvrdenie; 4) d alebo (Slnko je satelitom Zeme) je nepravdivé tvrdenie.

    Opis prezentácie LOGICKÉ HODNOTY, PREVÁDZKY, VÝRAZY. (TRIEDA 10) podľa snímok

    Medzi základné koncepty logiky patria: Výrok Booleovská hodnota Booleovské operácie Booleovské výrazy Vzorce

    Výrok (rozsudok) je deklaratívna veta, v ktorej je niečo potvrdené alebo vyvrátené. O akomkoľvek tvrdení sa dá povedať, že je pravdivé alebo nepravdivé. Napríklad: „Vonku prší“ bude pravda alebo nepravda v závislosti od aktuálneho počasia. Pravdivosť tvrdenia „Hodnota je väčšia ako“, napísaného vo forme nerovnosti:\u003e, bude závisieť od hodnôt premenných a.

    Ktoré z viet sú výroky? Určte ich pravdu. Aká dlhá je táto páska? Vypočujte si správu. Venujte sa ranným cvičením! Pomenujte vstupné zariadenie. Kto je neprítomný? Paríž je hlavným mestom Anglicka. Číslo 11 je prvočíslo. 4 + 5 \u003d 10. Rybu z rybníka bez problémov nedostanete. Pridajte čísla 2 a 5. Niektoré medvede žijú na severe. Všetky medvede sú hnedé. Aká je vzdialenosť z Moskvy do Leningradu?

    Booleovské hodnoty sú koncepty vyjadrené slovami: TRUE, FALSE (true, false). V dôsledku toho je pravdivosť tvrdenia vyjadrená logickými hodnotami. Boolovská premenná: symbolicky označená boolovská hodnota. Napríklad: ak je známe, že A, B, X, Y atď. Sú variabilné logické hodnoty, môžu nadobudnúť iba hodnotu TRUE alebo FALSE. Logický výraz je jednoduchý alebo zložitý výrok. Komplexné vyhlásenie je postavené na jednoduchých príkazoch pomocou logických operácií (spojovacie prvky)

    Logické operácie Spojenie (logické násobenie) Dvojmiestna operácia, napísaná ako A & B. Hodnota takéhoto výrazu bude NEPRAVDA, ak je hodnota aspoň jedného operandu nepravdivá. Disjunkcia (logický dodatok) Dvojmiestna operácia, napísaná ako A V B. Hodnota takéhoto výrazu bude TRUE, ak je hodnota aspoň jedného operandu pravdivá. Negácia je unárna (jedno miesto) operácia. Píše sa ako ¬ A alebo Ā.

    Logický vzorec je vzorec obsahujúci iba logické hodnoty a znaky logických operácií. Výsledok výpočtu logického vzorca je TRUE alebo FALSE. Poradie operácií v logických vzorcoch je určené prednosťou operácií. V zostupnom poradí sú logické operácie usporiadané nasledovne: negácia, konjunkcia, disjunkcia. Okrem toho zátvorky, ktoré sa dajú použiť v logických vzorcoch, ovplyvňujú poradie, v ktorom sa operácie vykonávajú. Napríklad: (A&B) v (Ā & B) v (Ā & B)

    Príklad 1: Vypočítajte hodnotu logického vzorca ¬ X & Y v X & Z Ak majú logické premenné nasledujúce hodnoty: X \u003d FALSE, Y \u003d TRUE, Z \u003d TRUE. Riešenie: Označme číslami zhora poradie operácií vo vzorci: Pomocou tabuľky pravdy vypočítaj vzorec v krokoch: 1. ¬ FALSE \u003d TRUE; 2. PRAVDA & PRAVDA \u003d PRAVDA; 3. FALSE & TRUE \u003d FALSE; 4. PRAVDA v NEPRAVDA \u003d PRAVDA. ¬ X & Y v X & Z

    PRÍKLAD 2 Určte hodnotu logického výrazu: nie (X\u003e Z) a nie (X \u003d Y), ak: 1) X \u003d 3, Y \u003d 5, Z \u003d 2; 2) X \u003d 0, Y \u003d 1, Z \u003d 19; 3) X \u003d 5, Y \u003d 0, Z \u003d -8; 4) X \u003d 9, Y \u003d -9, Z \u003d 9.

    Logické funkcie rozsahu číselných hodnôt Algebra čísel sa prelína s algebrou logiky v prípadoch, keď je potrebné skontrolovať, či hodnoty algebraických výrazov patria do určitej množiny. Napríklad príslušnosť hodnoty číselnej premennej X k množine kladných čísel je vyjadrená výrokom: „X je väčšie ako nula.“ Symbolicky sa píše takto: X\u003e 0. V algebre sa takýto výraz nazýva nerovnosť a v logike - vzťah. Pomer X\u003e 0 môže byť pravdivý alebo nepravdivý. Ak je X kladné, potom je to pravda, ak je záporné, potom je to nepravdivé. Vzťah má vo všeobecnosti nasledujúcu štruktúru: Znaky vzťahov: \u003d; ; \u003e; \u003d;<=.

    Postoj je jednoduché vyhlásenie, ktoré znamená logickú hodnotu. Môže to byť konštantné: 5\u003e 0 - vždy TRUE, 3 ≠ 6: 2 - vždy FALSE; a premenná: a 0) alebo P (x, y) \u003d (x

    Príklad: Napíšte predikát (logickú funkciu) z dvoch skutočných argumentov X a Y, ktoré budú TRUE, ak bod v rovine súradníc so súradnicami X a Y leží vo vnútri jednotkovej kružnice so stredom v počiatku. 1 1 -1 0 Y X Riešenie: Z geometrických úvah je zrejmé, že pre všetky body ležiace vo vnútri jednotkovej kružnice bude platiť hodnota nasledujúcej logickej funkcie: F (X, Y) \u003d (X 2 + Y 2<1) Для значений координат точек, лежащих на окружности и вне её, значение функции Y будет ложным.

    Boolovské výrazy v Pascalovych boolovských konštantách: true (true), false (false). Booleovské premenné: popísané pomocou Boolovského typu. Vzťahové operácie: Porovnáva dva operandy a určuje, či je zodpovedajúci vzťah medzi nimi pravdivý alebo nepravdivý. Operačné znaky vzťahu Logické operácie: nie –negácia; a - logické násobenie (spojka); alebo - logické doplnenie (disjunkcia); xor je OR výnimkou. Pravdivostná tabuľka pre tieto operácie (T- true, F-false) \u003d; ; \u003e; \u003d;<=. A B not A A and B A or B A xor B T T F T F F F T T

    Logický výraz môže pozostávať z logických konštánt a premenných, vzťahov, logických operácií. Boolovský výraz sa vyhodnotí ako pravdivý alebo nepravdivý. Napríklad booleovský vzorec v Pascale sa napíše ako nasledujúci booleovský výraz: nie X a Y alebo X a Z, kde X, Y, Z sú booleovské premenné. Booleovské premenné sú usporiadané v nasledujúcom poradí v zostupnom poradí podľa priority (priority): 1) nie 2) a 3) alebo, xor. Vzťahové operácie majú najmenšiu prioritu. Preto ak sú operandmi logickej operácie vzťahy, mali by byť uzavreté v zátvorkách. Napríklad nasledujúci logický výraz zodpovedá matematickej nerovnosti 1≤ X ≤ 50: (1<=X) and (X<=50)¬ X & Y v X & Z

    Logická funkcia nepárne (x) je logická funkcia na určenie parity argumentu, rovná sa true, ak x je nepárne, a rovná sa false, ak x je párne; trunc (x) je celočíselná funkcia zo skutočného argumentu, ktorá vracia najbližšie celé číslo nepresahujúce x v absolútnej hodnote.

    Pre správne napísanie zložitého logického výrazu (predikátu) je potrebné vziať do úvahy relatívne predikáty aritmetických, logických operácií a operácií vzťahov, pretože všetky môžu byť prítomné v logickom výraze. V zostupnom poradí podľa priority sú operácie usporiadané v tomto poradí: 1. Aritmetické operácie: -. (mínus unárne) *, / +, - 2. Logické operácie: nie a alebo, xor 3. Relačné operácie: \u003d,\u003e, \u003d,<=