Logické výrazy.  Téma: Booleovský dátový typ

Logické výrazy. Téma: Booleovský dátový typ

. X patrí do segmentu;
X leží mimo segmentu;
X patrí do segmentu alebo [-1,1];
X leží mimo segmentu alebo [-1,1].
3.
Vysvetlite štruktúru a pravidlá vykonávania podmienených príkazov.
4.
Napíšte špecifikovanú akciu ako jeden podmienený príkaz:
cos
2
X, pri 0x pri =
1-sin
2
X, inak.
5.
z
int z=0, x=1, y=

1;

80 Programovanie lineárnych algoritmov v systéme C++ Builder
if (x>0) if (y>0) z=1; inak z=2;
6.
Akú hodnotu bude mať premenná? z po vykonaní operátorov:
int z=0, x=

1, y = 1;
if (x) (ak (y>0) z=1;) inak z=2;
7.
Akú hodnotu bude mať premenná? z po vykonaní operátorov:
int z=0, x=0, y=1;
if (x) (ak (y>0) z=1;) inak z=2;
8.
Akú hodnotu bude mať premenná? z po vykonaní operátorov:
int z = 0, x = 3, y = 1;
if (x) (ak (y) z=1;) inak z=2;
9.
Označte chyby v nasledujúcich vyhláseniach:
ak (1
inak x=0; y+= 1;
10.
int z=0, x=0, y=1;
if (!x) ( if (!(y

1)) z=1;) inak z=2;
11.
Akú hodnotu bude mať premenná z po vykonaní príkazov:
int z = 0, x = 1, y = 1;
if (!x) ( if (!(y

1)) z=1;) inak z=2;
12.
Nájdite chyby vo fragmente programu:
(int n,x; prepínač (k) case + : x:=x-4 break; case

-

,

*

x = 5;
}
Aké pravidlá boli porušené a ako sa dajú chyby napraviť?


81
3.4
Jednotlivé úlohy pre sekciu 3
Každý študent potrebuje vyriešiť dva problémy prvej a druhej úrovne zložitosti.
Problémy prvej úrovne obtiažnosti.
1.
Dostanete štvormiestne kladné celé číslo. Napíšte program, ktorý vytlačí pravda alebo falošný podľa toho, či je zadaná podmienka splnená alebo nie: súčet 1 a 4 číslic sa rovná súčinu 2 a 3 číslic.
2.
Dané reálne čísla x, y. Ak sú x a y záporné, potom každú hodnotu nahraďte jej modulom; ak je iba jedna z nich záporná, zvýšte obe hodnoty o 5,5; v ostatných prípadoch znížte obe hodnoty 10-krát.
3.
Dané reálne čísla x, y. Ak sú x a y kladné, znížte každú hodnotu 5-krát; ak sú obe hodnoty v rozsahu [-3, 9], nahraďte obe hodnoty 0; v ostatných prípadoch zvýšte x a y o 3.
4.
Dané reálne čísla x, y (xy). Nahraďte menšie z týchto dvoch čísel ich polovičným súčtom a väčšie ich dvojitým súčinom.
5.
Ak je súčet troch párovo odlišných reálnych čísel x, y, z menší ako 1, nahraďte najmenšie z týchto troch čísel polovičným súčtom ostatných dvoch; v opačnom prípade nahraďte menšie z x a y polovičným súčtom zvyšných dvoch hodnôt.
6.
Dané reálne čísla a, b, c, d. Ak b>c>d, potom ponechajte čísla nezmenené; v opačnom prípade nahraďte všetky čísla štvorcami.
7.
Zistite, či je šťastné celé číslo so šiestimi číslicami. (Číslo sa nazýva šťastné, ak sa súčet jeho prvých troch číslic rovná súčtu jeho posledných troch číslic.)
8.
pravda alebo falošný podľa toho, či je zadaná podmienka splnená alebo nie: pre ľubovoľné reálne čísla a, b, c určite, či rovnica ax
2
+bx+c=0 aspoň jedno reálne riešenie.

82 Programovanie lineárnych algoritmov v systéme C++ Builder
9.
Ak chcete vyriešiť nasledujúci problém, napíšte program, ktorý tlačí pravda alebo falošný podľa toho, či je zadaná podmienka splnená alebo nie: určiť, či sa súčet prvých dvoch číslic daného štvorciferného čísla rovná súčtu jeho posledných dvoch čísel.
10.
Niektoré vzdelávacie inštitúcie majú nasledujúce pravidlá prijímania. Uchádzači absolvujú dve skúšky, ktoré sa hodnotia podľa
100 bodov každý. Ak žiadateľ získa najmenej 150 bodov, dáva to právo zapísať sa na denné oddelenie od 100 do 149 - na večerné oddelenie; pod 100 bodov znamená odmietnutie prijatia na štúdium. Napíšte program, ktorý v závislosti od počtu získaných bodov informuje uchádzača o jeho právach na prijatie.
11.
Napíšte program pomocou operátora výberu na získanie slovného popisu známok. (1 – „zlé“, 2 –
„neuspokojivé“, 3 – „uspokojivé“, 4 – „dobré“, 5 –
"Skvelé".)
12.
Ak chcete vyriešiť nasledujúci problém, napíšte program, ktorý tlačí pravda alebo falošný podľa toho, či je zadaná podmienka splnená alebo nie: určiť, či medzi číslicami daného trojciferného čísla sú rovnaké.
13.
Napíšte program, ktorý vytlačí pravda, ak dátum d1, m1 predchádza (do jedného roka) dátum d2, m2 a zmysel falošný inak.
14.
Napíšte program pomocou operátora výberu, ktorý na základe prvého písmena mena zobrazí na obrazovke celé meno
(Ivan, Peter, Nikolaj, Vladimír, Georgij).
15.
Napíšte program pomocou operátora výberu, ktorý na základe zadanej číslice bude 0≤ k≤ 5 vytlačí názov tohto čísla v ruštine a angličtine.
16.
Je dané celé číslo k (1

k

365). Určte, či k-tý deň v roku bude víkend alebo pracovný deň, ak je 1. januára pondelok.
17.
Vzhľadom na skutočné číslo X. Vypočítajte f, Ak:











hriech
,
1 0
,
0 5
2 11 2
prípadoch
zvyšok
V
X
X
X
pri
X
X
X
pri
f

Programovanie s jednorozmernými poliami
83 18.
Vzhľadom na skutočné číslo X. Napíšte program na výpočet f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
prípadoch
zvyšok
V
X
X
X
pri
X
X
X
pri
f
19.
Napíšte program pomocou operátora výberu, ktorý na základe prvého písmena názvu mesta zobrazí celý názov mesta (Kursk, Moskva, Tula, Novgorod, Voronež).
20.
Napíšte program pomocou operátora výberu, ktorý na základe prvého písmena priezviska zobrazí celé priezvisko (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Sú uvedené súradnice stredu a polomer kružnice. Určte, či určitý bod so súradnicami (x,y) patrí do kruhu.
22.
Napíšte program pomocou výberového operátora, ktorý na základe prvého písmena zadaného mena zvieraťa vypíše celé meno zvieraťa (pes, mačka, žirafa, kôň, opica).
23.
Dané tri rôzne čísla a,b,c. Zoraďte tieto čísla vo vzostupnom poradí tak, aby a zodpovedalo najmenšiemu číslu b- priemerný počet, c- najväčší.
24.
Napíšte program pomocou operátora výberu, ktorý zobrazí názov dňa v týždni podľa čísla (od 1 do 7).
25.
Napíšte program pomocou operátora výberu, ktorý zobrazí názov mesiaca v roku podľa čísla (od 1 do 12).
26.
Napíšte program pomocou operátora výberu, ktorý na základe zadaného prvého písmena názvu ročného obdobia vytlačí celý názov ročného obdobia.
27.
Dostanete päťmiestne kladné celé číslo. Napíšte program, ktorý vytlačí pravda alebo falošný podľa toho, či je zadaná podmienka splnená alebo nie: súčet 1, 3 a 5 číslic je väčší ako súčin 2 a 4 číslic.
28.
Dostanete štvormiestne kladné celé číslo. Napíšte program, ktorý vytlačí pravda alebo falošný záleží na

84 Programovanie lineárnych algoritmov v systéme C++ Builder či je špecifikovaná podmienka splnená alebo nie: aritmetický priemer 1 a
4 číslice sú väčšie ako súčet 2 a 3 číslic.
29.
Dané číslice a trojciferné číslo v desiatkovej číselnej sústave. Ak sa číslica zhoduje s najvyššou číslicou čísla, vypočítajte súčet číslic čísla. Ak sa číslica zhoduje so strednou číslicou čísla, vypočítajte súčin číslic čísla. Ak sa číslica zhoduje s najmenej významnou číslicou čísla, vypočítajte aritmetický priemer číslic čísla. Ak nie je splnená žiadna z podmienok, vypočítajte geometrický priemer číslic čísla.
30.
Dané číslice a trojciferné číslo v desiatkovej číselnej sústave. Ak sa číslica zhoduje s najvyššou číslicou čísla, vypočítajte aritmetický priemer číslic čísla. Ak sa číslica zhoduje so strednou číslicou čísla, vypočítajte geometrický priemer číslic čísla. Ak sa číslica zhoduje s najmenej významnou číslicou čísla, vypočítajte súčet číslic čísla. Ak nie je splnená žiadna z podmienok, vypočítajte súčin číslic čísla
Problémy druhej úrovne obtiažnosti.
1.
Dané dvojciferné kladné celé číslo v ternárnej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine, ak je najvyššia číslica čísla väčšia ako najnižšia, inak
- v angličtine.
2.
Uvádza sa celé dvojciferné kladné číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v angličtine, ak je najvyššia číslica čísla väčšia ako najnižšia, inak
- v ruštine.
3.
Uvádza sa celé dvojciferné kladné číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v angličtine, ak je najvyššia číslica čísla presne 2-krát väčšia ako najnižšia, inak
- v ruštine.
4.
Dané dvojciferné kladné celé číslo v ternárnej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine, ak je najvyššia číslica čísla menšia ako najnižšia, inak
- v angličtine.

Programovanie s jednorozmernými poliami
85 5.
Uvádza sa celé dvojciferné kladné číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine.
6.
Dané je celé dvojciferné kladné číslo v osmičkovej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine.
7.
Dané je celé dvojciferné kladné číslo v osmičkovej číselnej sústave. Napíšte program, ktorý zobrazí, ak je hlavná číslica menšia ako polovica vedľajšej číslice, názvy číslic čísla v angličtine, inak

v ruštine.
8.
Je dané celé dvojciferné kladné číslo v septálnej číselnej sústave. Napíšte program, ktorý zobrazí, ak sú čísla v zostupnom poradí, názvy číslic čísla v angličtine, inak

v ruštine.
9.
V desiatkovej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto číslic v angličtine.
10.
V desiatkovej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názvy čísel súčinu týchto čísel v ruštine.
11.
V desiatkovej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názov číslic modulu rozdielu medzi týmito číslicami v ruštine.
12.
V desiatkovej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názvy číslic v angličtine pre kvocient a zvyšok celočíselného delenia týchto čísel.
13.
Dané dvojciferné kladné celé číslo v deväťmiestnej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica trikrát väčšia ako najnižšia číslica, názvy číslic čísla v angličtine, inak

v ruštine.
14.
Dané dvojciferné kladné celé číslo v deväťmiestnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslice čísla, ktoré má väčšiu hodnotu v angličtine, a názov číslice čísla, ktoré má menšiu hodnotu.

v ruštine.

86 Programovanie lineárnych algoritmov v systéme C++ Builder
15.
Dané dvojciferné kladné celé číslo v septálnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslice čísla, ktoré má väčšiu hodnotu v angličtine, a názov číslice čísla, ktoré má menšiu hodnotu.

v ruštine.
16.
Dané je dvojciferné kladné celé číslo v hexadecimálnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v angličtine.
17.
Dané dve celé dvojciferné kladné čísla v ternárnej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto čísel v ruštine.
18.
Dané dve celé dvojciferné kladné čísla v binárnej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto čísel v angličtine.
19.
Dané dvojciferné kladné celé číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí, ak sú čísla usporiadané vo vzostupnom poradí, názvy číslic čísla v angličtine a inak

v ruštine.
20.
Dané dvojciferné kladné celé číslo v hexadecimálnej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica päťkrát väčšia ako najnižšia číslica, názvy číslic čísla v ruštine, inak

v angličtine.
21.
V osmičkovej číselnej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názvy číslic modulu rozdielu medzi týmito číslicami v ruštine.
22.
V osmičkovej číselnej sústave sú uvedené dve číslice. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto dvoch číslic v ruštine.
23.
Dané dvojciferné kladné celé číslo v septálnej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica trikrát väčšia ako najnižšia číslica, názvy číslic čísla v ruštine, inak

v angličtine.
24.
Dané dvojciferné kladné celé číslo v osmičkovej číselnej sústave. Napíšte program, ktorý zobrazí názov číslice čísla, ktoré má väčšiu hodnotu v ruštine a v jazyku

Programovanie s jednorozmernými poliami
87 je poradie číslice čísla, ktoré má najnižšiu hodnotu,

v angličtine.
25.
Dané dvojciferné kladné celé číslo v septálnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslic čísla s hodnotou menšou ako 4 v ruštine a názov číslic čísla s hodnotou väčšou alebo rovnou 4,

v angličtine.
26.
Dané dvojciferné kladné celé číslo v hexadecimálnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslic čísla s hodnotou menšou ako 3 v ruštine a názov číslic čísla s hodnotou väčšou alebo rovnou 3,

v angličtine.
27.
Uvádzajú sa prvé dve písmená (nerozlišujú sa malé aj veľké písmená) názvu mesiaca v roku. Napíšte program, ktorý zobrazí celý názov mesiaca v roku v ruštine.
28.
Uvádzajú sa prvé dve písmená (nerozlišujú sa malé aj veľké písmená) názvu dňa v týždni. Napíšte program, ktorý zobrazí celý názov dňa v týždni v ruštine.
29.
Starojaponský kalendár prijal 60-ročný cyklus pozostávajúci z piatich 12-ročných podcyklov. Podcykly boli označené farebnými názvami: zelená, červená, žltá, biela a čierna. V rámci každého podcyklu boli roky pomenované podľa zvierat: potkan, krava, tiger, zajac, drak, had, kôň, ovca, opica, kura, pes a prasa (1984 - rok zeleného potkana - bol začiatkom nasledujúceho cyklus). Napíšte program, ktorý zadá číslo určitého roku nášho letopočtu a vytlačí jeho názov podľa starého japonského kalendára.
30.
Dané dvojciferné kladné celé číslo v deväťmiestnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslic čísla s hodnotou väčšou ako 5 v ruštine a názov číslic čísla s hodnotou menšou alebo rovnou 5,

v angličtine.

88 Programovanie lineárnych algoritmov v systéme C++ Builder
4 PROGRAMOVACÍ CYKLUS
ALGORITHMY V SYSTÉME C++BUILDER
Táto časť skúma operátory jazykových slučiek
C++, získanie zručností v programovaní cyklických algoritmov, úvod
áno, kompilácia a ladenie programov.
4.1
Základné pojmy
Na jazyku C++ Builder Existujú tri operátory slučky:
1.
Slučka s predbežnou podmienkou ( zatiaľ čo);
2.
Slučka s dodatočnou podmienkou ( robiť);
3.
Slučka s počítadlom ( pre).
Slučkový operátor s predpokladom zatiaľ čo (Obrázok 4.1):
zatiaľ čo(stav) (telo slučky)
Obrázok 4.1

Schéma algoritmu slučkového operátora zatiaľ čo
Ak je výsledkom výpočtu podmienky pravda(true), potom sa vykoná telo cyklu a znova sa vykoná prechod na kontrolu podmienky. Ak je výsledkom výpočtu podmienky falošný(false), potom sa cyklus ukončí a presunie sa k príkazu nasledujúcemu za cyklickým operátorom zatiaľ čo.
Ak pred prvým vykonaním cyklu bola hodnota výrazu falošný, telo cyklu sa vôbec nevykoná a dôjde k prechodu na nasledujúci príkaz.
Podmienka
Telo slučky
Áno
Nie

Programovanie s jednorozmernými poliami
89
Príklad:
Vypočítajte súčet nepárnych čísel v rozsahu od 1 do 10.
( int k = 1, s = 0; zatiaľ čo (k ( s + = k; k + = 2;
}
}
Operátor slučky s dodatočnou podmienkou robiť (Obrázok 4.2):
robiť(telo slučky) zatiaľ čo(stav); ano nie podmienka
Telo slučky
Obrázok 4.2

Schéma algoritmu slučkového operátora robiť...zatiaľ
Podmienka je výraz logického typu, telo cyklu je jeden jednoduchý alebo zložený príkaz.
Telo cyklu príkazu

Vyberte si s učiteľom úlohu na samostatnú prácu z nižšie uvedených cvičení.

1. Vypočítajte hodnoty výrazu:

a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

b) kmod7 = kdiv5-1 pri k=15;

c) nepárne (trunc(10*p)) pri p=0,182;

d) nie nepárne (n) pre n=0;

e) t a (p mod 3 = 0) s t = pravda, p = 101010;

e) (x*y<>0) a (y>x) pre x=2, y=1;

g) (x*y<>0) alebo (y>x) pre x=2, y=1;

h) a alebo (nie b), keď a=nepravda, b=pravda;

2. Napíšte vzťah v jazyku Pascal, ktorý je pravdivý, keď je zadaná podmienka splnená, a v opačnom prípade je nepravdivý:

a) celé číslo k je deliteľné 7;

b) rovnica nemá skutočné korene;

c) bod (x, y) leží mimo kružnice s polomerom R so stredom v bode (1,0);

d) prirodzené číslo N je druhá mocnina prirodzeného čísla;

f) x=max(x,y,z);

a) (nepoužívajte operáciu not)g

h) aspoň jedna z logických premenných aab má hodnotu True;

i) obe logické premenné a a b majú hodnotu True.

3. Pri výpočte výrazov uveďte poradie operácií:

a) a a b alebo nie c a d;

b) (x>=0) alebo nie c a d.

4. Vypočítajte nasledujúce výrazy pre a=pravda, b=nepravda:

a) a alebo b a nie a;

b) (a alebo b) a nie a;

c) nie a a b;

d) nie (a a b)

5. Napíšte výraz v jazyku Pascal, ktorý je pravdivý, keď je zadaná podmienka splnená, a v opačnom prípade je nepravdivý:

a) x patrí do segmentu ;

b) x leží mimo segmentu;

c)* x patrí do segmentu alebo [-1, 1];

d)* x leží mimo segmentov a [-1, 1];

e) každé z čísel x, y, z je kladné;

g) žiadne z čísel x, y, z nie je kladné;

h) iba jedno z čísel x, y, z je kladné;

i) logická premenná a má hodnotu True, logická premenná b má hodnotu False;

j)* rok s poradovým číslom y je priestupný rok (prestupný rok, ak je jeho číslo násobkom 4, ale z násobkov 100 sú iba násobky 400 priestupnými rokmi, napr. 1700, 1800 a 1900 neprestupné roky, rok 2000 je priestupný).

6. Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí uvedený výraz:

a)* (y>=x) a (y+x>=0) a (y<=1);

b) (sqr(x)+sqr(y)<1) or (y>0) a (abs(x)<=1);

c) (trunc(y)=0 a (okrúhle (x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

d) (sqr(x)+sqr(y)<=4)=(y<=x).

7) Existuje podmienený operátor:

writeln („hurá!“)

writeln ('zlé...')

Je možné ho nahradiť nasledujúcimi vyhláseniami:

a) ak d=10 b) ak nie (d=10)

writeln ('hurá!') writeln ('hurá!')

writeln('zle...'); writeln('zle...');

c) ak nie (d=10) d) ak nie (d<>10)

writeln ('zlé...') writeln ('zlé...')

writeln('hurá!'); writeln('hurá!');

8) Aké budú hodnoty premenných j, k po vykonaní podmieneného príkazu:

ak sú počiatočné hodnoty premenných rovnaké:

Poznámka. V dôsledku vykonania operátora dec (k,2) sa hodnota premennej k zníži o 2.

Premenné booleovského typu sú opísané pomocou identifikátora Boolean . Môžu mať iba dva významy - Nepravdivé (klamať) A Pravda (pravda). Sú tiež popísané v časti popis premennej. Var<имя>:Boolean;

Logické výrazy môžu zahŕňať:

n logických hodnôt,

n relačné operácie (<- меньше, >- viac,<=- меньше или равно, >=- väčšie alebo rovné,<>- nerovná sa, =- rovný).

n logické operácie A, Alebo, Nie

n dec. akcie a funkcie


Turbo Pascal má logické operácie, ktoré sa vzťahujú na premenné logického typu. Toto sú operácie nie, a, alebo a xor.

Prevádzka nie(ne)má jeden operand a tvorí jeho logickú negáciu. Výsledok operácie not je False, ak je operand pravdivý, a True, ak je operand nepravdivý. Takže nie Pravda Nepravda (nepravda je lož), nie Nepravda Pravda (nie lož je pravda).

Výsledok operácie a(and) je pravdivé iba vtedy, ak sú oba jeho operandy pravdivé a nepravdivé vo všetkých ostatných prípadoch (logické násobenie).

Výsledok operácie alebo(alebo) je pravda, ak je jeden z jej operandov pravdivý, a nepravda, iba ak sú oba operandy nepravdivé (logické sčítanie).

Logické operácie, relačné operácie a aritmetické operácie sa často objavujú v rovnakom výraze. V tomto prípade musia byť vzťahy vľavo a vpravo od znaku logickej operácie uzavreté v zátvorkách, pretože logické operácie majú vyššiu prioritu. Vo všeobecnosti sa akceptuje nasledujúca priorita operácií:

2. a, *, /, div, mod

3. alebo, +, -

4. operácie vzťahov (<- меньше, >- viac,<=- меньше или равно, >=- väčšie alebo rovné,<>- nerovná sa, =- rovný).

Okrem toho je možné zmeniť poradie operácií pomocou zátvoriek. Napríklad v logickom výraze usporiadame poradie akcií:

AorBandnot(AorB)


Operácia alebo uzavretá v zátvorkách sa vykoná ako prvá, po ktorej nasledujú operácie not a, alebo. Ak namiesto premenných A a B dosadíme hodnoty True a False, potom pomocou už diskutovaného postupu získame hodnotu celého výrazu rovnú True.

Cvičenie 5: . Napíšte si do zošita a vypočítajte význam výrazov

s a=10, b=20, c=pravda, d=nepravda: A)(a>5) a (b>5) a (a<20) and (b<30);

b) nie (a<15) or not (b<30);

c) c alebo da (b=20).

Pozornosť ! V jazyku Pascal neexistuje spôsob, ako zadať boolovské údaje pomocou operátora čítania. Je však možné vypísať hodnoty premenných typu Boolean pomocou operátora write. Napríklad, po vykonaní príkazu write (5>2) sa na obrazovke zobrazí True.

Domáce otázky a úlohy:

1. Ako je opísaná logická premenná a aké hodnoty môže nadobúdať?

2. Čo možno zahrnúť do logických výrazov. Uveďte príklady jednoduchých logických výrazov.

3. Povedzte nám o logických operáciách v Pascale. Uveďte príklady zložených logických výrazov.

4. Aká je priorita rôznych operácií v Pascale. Uveďte príklad.


Úlohy:

№19.

A. celé číslo k je deliteľné 7;

B. Aspoň jedno z celých čísel x, y je párne;

G. x=max(x,y,z), to znamená, že x je najväčšie z troch čísel x,y,z;

D. (nepoužívajte operáciu not)

E. aspoň jedna z logických premenných aab má hodnotu True;

G. obe logické premenné a a b majú hodnotu True.

№20. Zadajte poradie operácií pri vyhodnocovaní výrazov:

A) a a b alebo nie c a d; b) (x>=0) alebo nie c a d.

№21. Vyhodnoťte nasledujúce výrazy, keď a=Pravda, b=Nepravda:

A) a alebo b a nie a; b)(a alebo b) a nie a; V) nie a a b; G) nie (a a b)

№22. Vytvorte program: Na prijímacích skúškach uchádzač absolvoval fyziku, informatiku a esej. Uchádzač bude prijatý, ak získa 5 z informatiky a získa aspoň 13 bodov za tri skúšky Je pravda, že bol prijatý (výstup Pravda/Nepravda)?

§ 8. Riešenie úloh na tému „Lineárne programy. Logické hodnoty."

Napr. 7 . Vypočítajte hodnoty výrazu:

a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

b) kmod7 = kdiv5-1 pri k=15;

c) nepárne (trunc(10*p)) pri p=0,182;

d) nie nepárne (n) pre n=0;

e) t a (p mod 3 = 0) s t = pravda, p = 101010;

e) (x*y<>0) a (y>x) pre x=2, y=1;

g) (x*y<>0) alebo (y>x) pre x=2, y=1;

h) a alebo (nie b), keď a=nepravda, b=pravda;

Napr. 8. Napíšte výraz v jazyku Pascal, ktorý je pravdivý, ak je zadaná podmienka splnená, a v opačnom prípade je nepravdivý:

a) x patrí do segmentu ;

b) x leží mimo segmentu;

c)* x patrí do segmentu alebo [-1, 1];

d)* x leží mimo segmentov a [-1, 1];

e) každé z čísel x, y, z je kladné;

g) žiadne z čísel x, y, z nie je kladné;

h) iba jedno z čísel x, y, z je kladné;

i) logická premenná a má hodnotu True, logická premenná b má hodnotu False;


j)* rok s poradovým číslom y je priestupný rok (prestupný rok, ak je jeho číslo násobkom 4, ale z násobkov 100 sú iba násobky 400 priestupnými rokmi, napr. 1700, 1800 a 1900 neprestupné roky, rok 2000 je priestupný).

Napr. 9 . Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí uvedený výraz:

a)* (y>=x) a (y+x>=0) a (y<=1);

b) (sqr(x)+sqr(y)<1) or (y>0) a (abs(x)<=1);

c) (trunc(y)=0 a (okrúhle (x)=0);

d)* (abs(x)<=1)>(abs(y)>=1);

d) (sqr(x)+sqr(y)<=4)=(y<=x).

Napr. 10 ..Kniha stojí X rubľov. Kupujúci má bankovky v nominálnych hodnotách 50, 10, 5, 1 rubľov. Koľko a aké účty musíte vziať, aby ste zaplatili za knihu s minimálnym počtom účtov?

Booleovské premenné zvyčajne získavajú svoje hodnoty vykonávaním porovnaní a matematických operácií (diskutovaných v predchádzajúcej lekcii), ako aj pomocou špecifických booleovských operácií.

Turbo Pascal má logické operácie, ktoré sa vzťahujú na premenné logického typu. Toto sú operácie nie, a, alebo a xor. V tejto téme sa pozriete na tri logické operácie. Označenia a výsledky týchto operácií sú uvedené v tabuľke. Zvážiť to.

Prevádzka nie(ne)má jeden operand a tvorí jeho logickú negáciu. Výsledok operácie not je False, ak je operand pravdivý, a True, ak je operand nepravdivý. takže,

nie je pravda nepravda (nepravda je lož)

nie je to nepravda, pravda (nie lož nie je pravda)

Výsledok operácie a(and) je pravdivé iba vtedy, ak sú oba jeho operandy pravdivé a nepravdivé vo všetkých ostatných prípadoch.

Výsledok operácie alebo(alebo) je pravda, ak je jeden z jej operandov pravdivý, a nepravda, iba ak sú oba operandy nepravdivé.

Cvičenie . Pokúste sa určiť význam booleovských operácií pre príkazy:

  1. Školák zostáva cez zimné prázdniny doma alebo ide niekam na dovolenku.
  2. Philip Kirkorov je spevák a operátor kombajnu.
  3. Školáci sú chlapci a dievčatá..

Logické operácie, relačné operácie a aritmetické operácie sa často objavujú v rovnakom výraze. V tomto prípade musia byť vzťahy vľavo a vpravo od znamienka logickej operácie uzavreté do zátvoriek, pretože logické operácie majú vyššiu prioritu. Vo všeobecnosti sa akceptuje nasledujúca priorita operácií:

  • a, *, /, div, mod
  • alebo, +, -
  • operácie vzťahov..

. Logická operácia a sa tiež nazýva logické násobenie a logická operácia alebo sa tiež nazýva logické sčítanie.

Okrem toho je možné zmeniť poradie operácií pomocou zátvoriek. Napríklad v logickom výraze usporiadame poradie akcií

A alebo B a nie (A alebo B)

Operácia alebo uzavretá v zátvorkách sa vykoná ako prvá, po ktorej nasledujú operácie not a, alebo. Ak namiesto premenných A a B dosadíme hodnoty True a False, potom pomocou už diskutovaného postupu získame hodnotu celého výrazu rovnú True.

Cvičenie . Zapíšte si do poznámkového bloku a vypočítajte hodnoty výrazov pre a=10, b=20, c=pravda, d=nepravda:

  • (a>5) a (b>5) a (a<20) and (b<30);
  • nie (a<15) or not (b<30);
  • c alebo d a (b=20);

Pozor! V jazyku Pascal neexistuje spôsob, ako zadať boolovské údaje pomocou operátora čítania. Je však možné vypísať hodnoty premenných typu Boolean pomocou operátora write.

Napríklad po vykonaní príkazu write (5>2) sa na obrazovke zobrazí True.

Samostatná práca

Vyberte si s učiteľom úlohu na samostatnú prácu z nižšie uvedených cvičení.

  1. Vypočítajte hodnoty výrazu:

    a) sqr(x)+sqr(y)<=4 при x=0.3, y=-1.6;

    b) kmod7 = kdiv5-1 pri k=15;

    c) nepárne (trunc(10*p)) pri p=0,182;

    d) nie nepárne (n) pre n=0;

    e) t a (p mod 3 = 0) s t = pravda, p = 101010;

    e) (x*y<>0) a (y>x) pre x=2, y=1;

    g) (x*y<>0) alebo (y>x) pre x=2, y=1;

    h) a alebo (nie b), keď a=nepravda, b=pravda;

  2. Napíšte vzťah v jazyku Pascal, ktorý je pravdivý, ak je zadaná podmienka splnená, a v opačnom prípade je nepravdivý:

    a) celé číslo k je deliteľné 7;

    b) bod (x, y) leží mimo kružnice s polomerom R so stredom v bode (1,0);

    c) prirodzené číslo N je druhá mocnina prirodzeného čísla;

    d) 0

    e) x=max(x,y,z);

    e) aspoň jedna z logických premenných aab má hodnotu True;

    g) obe logické premenné a a b majú hodnotu True.

  3. Zadajte poradie operácií pri vyhodnocovaní výrazov:

    a) a a b alebo nie c a d;

    b) (x>=0) alebo nie c a d.

  4. Vyhodnoťte nasledujúce výrazy, keď a=pravda, b=nepravda:

    a) a alebo b a nie a;

    b) (a alebo b) a nie a;

    c) nie a a b;

    d) nie (a a b)

  5. Napíšte výraz v jazyku Pascal, ktorý je pravdivý, ak je zadaná podmienka splnená, a v opačnom prípade je nepravdivý:

    a) x patrí do segmentu ;

    b) x leží mimo segmentu;

    c)* x patrí do segmentu alebo [-1, 1];

    d)* x leží mimo segmentov a [-1, 1];

    e) každé z čísel x, y, z je kladné;

    g) žiadne z čísel x, y, z nie je kladné;

    h) iba jedno z čísel x, y, z je kladné;

    i) logická premenná a má hodnotu True, logická premenná b má hodnotu False;

    j)* rok s poradovým číslom y je priestupný rok (prestupný rok, ak je jeho číslo násobkom 4, ale z násobkov 100 sú priestupnými rokmi iba násobky 400, napr. 1700, 1800 a 1900 sú neprestupné roky, rok 2000 je priestupný).

  6. Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí uvedený výraz:

    a)* (y>=x) a (y+x>=0) a (y<=1);

    b) (sqr(x)+sqr(y)<1) or (y>0) a (abs(x)<=1);

    c) (trunc(y)=0 a (okrúhle (x)=0);

    d)* (abs(x)<=1)>(abs(y)>=1);

    d) (sqr(x)+sqr(y)<=4)=(y<=x).

  7. Existuje podmienený operátor:
    ak d<>10
    potom
    writeln („hurá!“)
    inak
    writeln('zle...');

    Je možné ho nahradiť nasledujúcimi vyhláseniami:

  8. Aké budú hodnoty premenných j, k po vykonaní podmieneného príkazu:
    ak j>k
    potom
    j:=k-2
    inak
    dec(k,2);
    ak sú počiatočné hodnoty premenných rovnaké:
    a) j = 3, k = 5;
    b) j = 3, k = 3;
    c) j = 3, k = 2.

Poznámka . V dôsledku vykonania operátora dec (k,2) sa hodnota premennej k zníži o 2.