Logické výrazy.  Téma: Booleovský datový typ

Logické výrazy. Téma: Booleovský datový typ

. X patří do segmentu ;
X leží mimo segment;
X patří do segmentu nebo [-1,1];
X leží mimo segment nebo [-1,1].
3.
Vysvětlete strukturu a pravidla pro provádění podmíněných příkazů.
4.
Napište zadanou akci jako jeden podmíněný příkaz:
cos
2
X, při 0x na =
1-hřích
2
X, v opačném případě.
5.
z
int z=0, x=1, y=

1;

80 Programování lineárních algoritmů v systému C++ Builder
if (x>0) if (y>0) z=1; jinak z=2;
6.
Jakou hodnotu bude mít proměnná? z po provedení operátorů:
int z=0, x=

1, y=1;
if (x) ( if (y>0) z=1;) else z=2;
7.
Jakou hodnotu bude mít proměnná? z po provedení operátorů:
int z=0, x=0, y=1;
if (x) ( if (y>0) z=1;) else z=2;
8.
Jakou hodnotu bude mít proměnná? z po provedení operátorů:
int z=0, x=3, y=1;
if (x) ( if (y) z=1;) else z=2;
9.
Uveďte prosím chyby v následujících prohlášeních:
pokud (1
jinak x=0; y+= 1;
10.
int z=0, x=0, y=1;
if (!x) ( if (!(y

1)) z=1;) jinak z=2;
11.
Jakou hodnotu bude mít proměnná z po provedení příkazů:
int z=0, x=1, y=1;
if (!x) ( if (!(y

1)) z=1;) jinak z=2;
12.
Najděte chyby ve fragmentu programu:
(int n,x; přepínač (k) case + : x:=x-4 break; case

-

,

*

x=5;
}
Jaká pravidla byla porušena a jak lze chyby napravit?


81
3.4
Jednotlivé úkoly pro oddíl 3
Každý student musí vyřešit dva problémy první a druhé úrovně složitosti.
Problémy první úrovně obtížnosti.
1.
Dostanete čtyřmístné kladné celé číslo. Napište program, který tiskne skutečný nebo Nepravdivé podle toho, zda je zadaná podmínka splněna či nikoliv: součet 1 a 4 číslic se rovná součinu 2 a 3 číslic.
2.
Daná reálná čísla x, y. Pokud jsou x a y záporné, pak každou hodnotu nahraďte jejím modulem; pokud je pouze jedna z nich záporná, zvyšte obě hodnoty o 5,5; v ostatních případech snižte obě hodnoty 10krát.
3.
Daná reálná čísla x, y. Pokud jsou x a y kladné, snižte každou hodnotu 5krát; pokud jsou obě hodnoty v rozsahu [-3, 9], nahraďte obě hodnoty 0; v ostatních případech zvyšte x a y o 3.
4.
Jsou dána reálná čísla x, y (xy). Nahraďte menší z těchto dvou čísel jejich polovičním součtem a větší jejich dvojitým součinem.
5.
Jestliže součet tří párově odlišných reálných čísel x, y, z je menší než 1, pak nejmenší z těchto tří čísel nahraďte polovičním součtem ostatních dvou; jinak nahraďte menší z x a y polovičním součtem zbývajících dvou hodnot.
6.
Jsou dána reálná čísla a, b, c, d. Pokud b>c>d, pak ponechte čísla beze změny; jinak nahraďte všechna čísla čtverci.
7.
Určete, zda je šestimístné celé číslo šťastné. (Číslo se nazývá šťastné, pokud je součet jeho prvních tří číslic roven součtu jeho posledních tří číslic.)
8.
skutečný nebo Nepravdivé podle toho, zda je zadaná podmínka splněna či nikoliv: pro libovolná reálná čísla a, b, c určete, zda rovnice ax
2
+bx+c=0 alespoň jedno reálné řešení.

82 Programování lineárních algoritmů v systému C++ Builder
9.
Chcete-li vyřešit následující problém, napište program, který tiskne skutečný nebo Nepravdivé podle toho, zda je zadaná podmínka splněna či nikoliv: určete, zda se součet prvních dvou číslic daného čtyřmístného čísla rovná součtu jeho posledních dvou čísel.
10.
Některé vzdělávací instituce mají následující pravidla přijímání. Uchazeči skládají dvě zkoušky, které se hodnotí dle
100 bodů každý. Pokud žadatel získá alespoň 150 bodů, dává to právo zapsat se do prezenčního oddělení, od 100 do 149 - do večerního oddělení; pod 100 bodů znamená odmítnutí přijetí ke studiu. Napište program, který v závislosti na počtu získaných bodů informuje uchazeče o jeho právech na přijetí.
11.
Napište program pomocí operátoru výběru, abyste získali slovní popis známek. (1 – „špatný“, 2 –
„neuspokojivé“, 3 – „uspokojivé“, 4 – „dobré“, 5 –
"Skvělý".)
12.
Chcete-li vyřešit následující problém, napište program, který tiskne skutečný nebo Nepravdivé podle toho, zda je zadaná podmínka splněna či nikoli: určete, zda jsou mezi číslicemi daného trojciferného čísla shodné.
13.
Napište program, který tiskne skutečný, pokud datum d1, m1 předchází (do jednoho roku) datu d2, m2 a význam Nepravdivé v opačném případě.
14.
Napište program pomocí operátoru výběru, který na základě prvního písmene jména zobrazí celé jméno na obrazovce
(Ivan, Petr, Nikolaj, Vladimír, Georgij).
15.
Napište program pomocí výběrového operátoru, který na základě zadané číslice 0≤ k≤ 5 vytiskne název tohoto čísla v ruštině a angličtině.
16.
Je dáno celé číslo k (1

k

365). Určete, zda k-tý den v roce bude víkend nebo pracovní den, je-li 1. leden pondělí.
17.
Vzhledem k reálnému číslu X. Vypočítat F, Pokud:











hřích
,
1 0
,
0 5
2 11 2
případy
zbytek
PROTI
X
X
X
na
X
X
X
na
F

Programování s jednorozměrnými poli
83 18.
Vzhledem k reálnému číslu X. Napište program pro výpočet F:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
případy
zbytek
PROTI
X
X
X
na
X
X
X
na
F
19.
Napište program pomocí operátoru výběru, který na základě prvního písmene názvu města zobrazí celý název města (Kursk, Moskva, Tula, Novgorod, Voroněž).
20.
Napište program pomocí výběrového operátoru, který na základě prvního písmene příjmení zobrazí celé příjmení (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Jsou uvedeny souřadnice středu a poloměr kružnice. Určete, zda určitý bod se souřadnicemi (x,y) patří ke kružnici.
22.
Napište program pomocí výběrového operátoru, který na základě prvního písmene zadaného jména zvířete vytiskne celé jméno zvířete (pes, kočka, žirafa, kůň, opice).
23.
Jsou dána tři různá čísla a,b,c. Seřaďte tato čísla vzestupně tak, aby A odpovídalo nejmenšímu číslu b- průměrné číslo, C- největší.
24.
Napište program pomocí výběrového operátoru, který zobrazí název dne v týdnu podle čísla (od 1 do 7).
25.
Napište program pomocí výběrového operátoru, který zobrazí název měsíce v roce podle čísla (od 1 do 12).
26.
Napište program pomocí výběrového operátoru, který na základě zadaného prvního písmene názvu ročního období vytiskne celý název ročního období.
27.
Dostanete pětimístné kladné celé číslo. Napište program, který tiskne skutečný nebo Nepravdivé podle toho, zda je zadaná podmínka splněna či nikoliv: součet 1, 3 a 5 číslic je větší než součin 2 a 4 číslic.
28.
Dostanete čtyřmístné kladné celé číslo. Napište program, který tiskne skutečný nebo Nepravdivé záleží na

84 Programování lineárních algoritmů v systému C++ Builder zda je zadaná podmínka splněna či nikoliv: aritmetický průměr 1 a
4 číslice jsou větší než součet 2 a 3 číslic.
29.
Dané číslice a trojmístné číslo v desítkové soustavě čísel. Pokud se číslice shoduje s nejvyšší číslicí čísla, vypočítejte součet číslic čísla. Pokud se číslice shoduje se střední číslicí čísla, vypočítejte součin číslic čísla. Pokud se číslice shoduje s nejméně významnou číslicí čísla, vypočítejte aritmetický průměr číslic čísla. Pokud není splněna žádná z podmínek, vypočítejte geometrický průměr číslic čísla.
30.
Dané číslice a trojmístné číslo v desítkové soustavě čísel. Pokud se číslice shoduje s nejvyšší číslicí čísla, vypočítejte aritmetický průměr číslic čísla. Pokud se číslice shoduje se střední číslicí čísla, vypočítejte geometrický průměr číslic čísla. Pokud se číslice shoduje s nejméně významnou číslicí čísla, vypočítejte součet číslic čísla. Pokud není splněna žádná z podmínek, vypočítejte součin číslic čísla
Problémy druhého stupně obtížnosti.
1.
Je dáno dvouciferné kladné celé číslo v ternární číselné soustavě. Napište program, který zobrazí názvy číslic čísla v ruštině, pokud je nejvyšší číslice čísla větší než nejnižší, jinak
- v angličtině.
2.
Udává se celé dvoumístné kladné číslo v pětimístné číselné soustavě. Napište program, který zobrazí názvy číslic čísla v angličtině, pokud je nejvyšší číslice čísla větší než nejnižší, jinak
- v Rusku.
3.
Udává se celé dvoumístné kladné číslo v pětimístné číselné soustavě. Napište program, který zobrazí názvy číslic čísla v angličtině, pokud je nejvyšší číslice čísla přesně 2krát větší než nejnižší, jinak
- v Rusku.
4.
Je dáno dvouciferné kladné celé číslo v ternární číselné soustavě. Napište program, který zobrazí názvy číslic čísla v ruštině, pokud je nejvyšší číslice čísla menší než nejnižší, jinak
- v angličtině.

Programování s jednorozměrnými poli
85 5.
Udává se celé dvoumístné kladné číslo v pětimístné číselné soustavě. Napište program, který zobrazí názvy číslic čísla v ruštině.
6.
Je dáno celé dvojciferné kladné číslo v osmičkové soustavě. Napište program, který zobrazí názvy číslic čísla v ruštině.
7.
Je dáno celé dvojciferné kladné číslo v osmičkové soustavě. Napište program, který zobrazí, pokud je hlavní číslice menší než polovina vedlejší číslice, názvy číslic čísla v angličtině, jinak

v Rusku.
8.
Je dáno celé dvojciferné kladné číslo v septální číselné soustavě. Napište program, který zobrazí, pokud jsou čísla v sestupném pořadí, názvy číslic čísla v angličtině, jinak

v Rusku.
9.
V desítkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí názvy v angličtině číslic součtu těchto číslic.
10.
V desítkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí názvy v ruštině čísel součinu těchto čísel.
11.
V desítkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí název v ruštině číslic modulu rozdílu mezi těmito číslicemi.
12.
V desítkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí názvy číslic v angličtině pro podíl a zbytek celočíselného dělení těchto čísel.
13.
Je dáno dvoumístné kladné celé číslo v devítimístné číselné soustavě. Napište program, který zobrazí, pokud je nejvyšší číslice třikrát větší než nejnižší číslice, názvy číslic čísla v angličtině, jinak

v Rusku.
14.
Je dáno dvoumístné kladné celé číslo v devítimístné číselné soustavě. Napište program, který zobrazí název číslice čísla, které má větší hodnotu v angličtině, a název číslice čísla, které má menší hodnotu.

v Rusku.

86 Programování lineárních algoritmů v systému C++ Builder
15.
Je dáno dvoumístné kladné celé číslo v číselné soustavě sept. Napište program, který zobrazí název číslice čísla, které má větší hodnotu v angličtině, a název číslice čísla, které má menší hodnotu.

v Rusku.
16.
Je dáno dvoumístné kladné celé číslo v hexadecimální soustavě čísel. Napište program, který zobrazí názvy číslic čísla v angličtině.
17.
Jsou dána dvě celočíselná dvouciferná kladná čísla v ternární číselné soustavě. Napište program, který zobrazí názvy číslic součtu těchto čísel v ruštině.
18.
Jsou dána dvě celočíselná dvouciferná kladná čísla v binární číselné soustavě. Napište program, který zobrazí názvy číslic součtu těchto čísel v angličtině.
19.
Je dáno dvoumístné kladné celé číslo v pětimístné číselné soustavě. Napište program, který zobrazí, pokud jsou čísla uspořádána ve vzestupném pořadí, názvy číslic čísla v angličtině a jinak

v Rusku.
20.
Je dáno dvoumístné kladné celé číslo v hexadecimální soustavě čísel. Napište program, který zobrazí, pokud je nejvyšší číslice pětkrát větší než nejnižší číslice, názvy číslic čísla v ruštině, jinak

v angličtině.
21.
V osmičkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí názvy v ruštině číslic modulu rozdílu mezi těmito číslicemi.
22.
V osmičkové soustavě jsou uvedeny dvě číslice. Napište program, který zobrazí názvy číslic součtu těchto dvou číslic v ruštině.
23.
Je dáno dvoumístné kladné celé číslo v číselné soustavě sept. Napište program, který zobrazí, pokud je nejvyšší číslice třikrát větší než nejnižší číslice, názvy číslic čísla v ruštině, jinak

v angličtině.
24.
Je dáno dvoumístné kladné celé číslo v osmičkové soustavě. Napište program, který zobrazí název číslice čísla, které má větší hodnotu v ruštině a v jazyce

Programování s jednorozměrnými poli
87 je pořadí číslice čísla, které má nejnižší hodnotu,

v angličtině.
25.
Je dáno dvoumístné kladné celé číslo v číselné soustavě sept. Napište program, který zobrazí název číslic čísla s hodnotou menší než 4 v ruštině a název číslic čísla s hodnotou větší nebo rovnou 4,

v angličtině.
26.
Je dáno dvoumístné kladné celé číslo v hexadecimální soustavě čísel. Napište program, který zobrazí název číslic čísla s hodnotou menší než 3 v ruštině a název číslic čísla s hodnotou větší nebo rovnou 3,

v angličtině.
27.
Jsou uvedena první dvě písmena (nerozlišují se malá i velká písmena) názvu měsíce v roce. Napište program, který zobrazí celý název měsíce v roce v ruštině.
28.
Jsou uvedena první dvě písmena (nerozlišují se malá i velká písmena) názvu dne v týdnu. Napište program, který zobrazí celý název dne v týdnu v ruštině.
29.
Starý japonský kalendář přijal 60letý cyklus, skládající se z pěti 12letých podcyklů. Podcykly byly označeny názvy barev: zelená, červená, žlutá, bílá a černá. V rámci každého podcyklu byly roky pojmenovány po zvířatech: krysa, kráva, tygr, zajíc, drak, had, kůň, ovce, opice, kuře, pes a prase (1984 – rok zelené krysy – byl začátkem dalšího cyklus). Napište program, který zadá číslo určitého roku našeho letopočtu a vytiskne jeho název podle starého japonského kalendáře.
30.
Je dáno dvoumístné kladné celé číslo v devítimístné číselné soustavě. Napište program, který zobrazí název číslic čísla s hodnotou větší než 5 v ruštině a název číslic čísla s hodnotou menší nebo rovnou 5,

v angličtině.

88 Programování lineárních algoritmů v systému C++ Builder
4 PROGRAMOVACÍ CYKLUS
ALGORITHMY V SYSTÉMU C++BUILDER
Tato část zkoumá operátory jazykových smyček
C++, získání dovedností v programování cyklických algoritmů, úvod
ano, kompilace a ladění programů.
4.1
Základní pojmy
Na jazyku C++ Builder Existují tři operátoři smyčky:
1.
Smyčka s předpokladem ( zatímco);
2.
Smyčka s dodatečnou podmínkou ( dělat);
3.
Smyčka s počítadlem ( pro).
Operátor smyčky s předpokladem zatímco (Obrázek 4.1):
zatímco(stav) (tělo smyčky)
Obrázek 4.1

Schéma algoritmu smyčkového operátora zatímco
Pokud je výsledkem výpočtu podmínky skutečný(true), pak se provede tělo smyčky a znovu se provede přechod ke kontrole podmínky. Pokud je výsledkem výpočtu podmínky Nepravdivé(false), pak smyčka opustí a přejde k příkazu za cyklickým operátorem zatímco.
Jestliže před prvním provedením cyklu byla hodnota výrazu Nepravdivé, tělo cyklu se vůbec neprovede a dojde k přechodu na další příkaz.
Stav
Tělo smyčky
Ano
Ne

Programování s jednorozměrnými poli
89
Příklad:
Vypočítejte součet lichých čísel v rozsahu od 1 do 10.
( int k=1, s=0; zatímco (k ( s+=k; k+=2;
}
}
Operátor smyčky s postcondition dělat (Obrázek 4.2):
dělat(tělo smyčky) zatímco(stav); ano ne podmínka
Tělo smyčky
Obrázek 4.2

Schéma algoritmu smyčkového operátora dělat, zatímco
Podmínka je výraz logického typu, tělo cyklu je jeden jednoduchý nebo složený příkaz.
Tělo smyčky příkazu

Vyberte si se svým učitelem z níže uvedených cvičení úkol pro samostatnou práci.

1. Vypočítejte hodnoty výrazu:

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

b) k mod 7 = k div5-1 při k=15;

c) liché(trunc(10*p)) při p=0,182;

d) není liché(n) pro n=0;

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

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

g) (x*y<>0) nebo (y>x) pro x=2, y=1;

h) a nebo (nikoli b) když a=nepravda, b=pravda;

2. Napište relaci v Pascalu, která je pravdivá, když je zadaná podmínka splněna, a v opačném případě nepravdivá:

a) celé číslo k je dělitelné 7;

b) rovnice nemá reálné kořeny;

c) bod (x, y) leží mimo kružnici o poloměru R se středem v bodě (1,0);

d) přirozené číslo N je druhou mocninou přirozeného čísla;

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

a) (nepoužívejte operaci not)g

h) alespoň jedna z logických proměnných aab má hodnotu True;

i) obě logické proměnné a a b mají hodnotu True.

3. Uveďte pořadí operací při výpočtu výrazů:

a) a a b nebo ne c a d;

b) (x>=0) nebo ne c a d.

4. Vypočítejte následující výrazy pro a=pravda, b=nepravda:

a) a nebo b a ne a;

b) (a nebo b) a nikoli a;

c) ne a a b;

d) ne (a a b)

5. Napište výraz v Pascalu, který je pravdivý, když je zadaná podmínka splněna, a v opačném případě je nepravdivý:

a) x patří do segmentu ;

b) x leží mimo segment;

c)* x patří do segmentu nebo [-1, 1];

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

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

g) žádné z čísel x, y, z není kladné;

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

i) logická proměnná a má hodnotu True, logická proměnná b má hodnotu False;

j)* rok s pořadovým číslem y je přestupný rok (přestupný rok, pokud je jeho číslo násobkem 4, ale z násobků 100 jsou přestupnými roky pouze násobky 400, např. 1700, 1800 a 1900 nepřestupné roky, rok 2000 je přestupný rok).

6. Nakreslete na rovinu (x, y) oblast, ve které a pouze ve které 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 (round(x)=0);

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

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

7) Existuje podmíněný operátor:

writeln ("hurá!")

writeln ('špatný...')

Je možné jej nahradit následujícími tvrzeními:

a) pokud d=10 b) pokud ne (d=10)

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

writeln('špatný...'); writeln('špatný...');

c) pokud ne (d=10) d) pokud ne (d<>10)

writeln ('špatný...') writeln ('špatný...')

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

8) Jaké budou hodnoty proměnných j, k po provedení podmíněného příkazu:

pokud jsou počáteční hodnoty proměnných stejné:

Poznámka. V důsledku provedení operátoru dec (k,2) se hodnota proměnné k sníží o 2.

Proměnné typu boolean jsou popsány pomocí identifikátoru Boolean . Mohou mít pouze dva významy - Nepravdivé (lhát) A Skutečný (skutečný). Jsou také popsány v části popis proměnných. Var<имя>:Boolean;

Logické výrazy mohou zahrnovat:

n logických hodnot,

n relační operace (<- меньше, >- více,<=- меньше или равно, >=- větší nebo rovno,<>- nerovná se, =- rovná se).

n logické operace A, Nebo, Ne

n prosinec akce a funkce


Turbo Pascal má logické operace, které platí pro proměnné logického typu. Toto jsou operace ne, a, nebo a xor.

Úkon ne(ne)má jeden operand a tvoří jeho logickou negaci. Výsledek operace not je False, pokud je operand pravdivý, a True, pokud je operand nepravdivý. Tedy ne Pravda Nepravda (nepravda je lež), ne Nepravda Pravda (ne lež je pravda).

Výsledek operace a(and) je pravdivé pouze tehdy, jsou-li oba jeho operandy pravdivé, a nepravdivé ve všech ostatních případech (logické násobení).

Výsledek operace nebo(nebo) je pravdivé, pokud je některý z jeho operandů pravdivý, a nepravdivé pouze v případě, že oba operandy jsou nepravdivé (logické sčítání).

Logické operace, relační operace a aritmetické operace se často objevují ve stejném výrazu. V tomto případě musí být vztahy vlevo a vpravo od znaku logické operace uzavřeny v závorkách, protože logické operace mají vyšší prioritu. Obecně je akceptována následující priorita operací:

2. a, *, /, div, mod

3. nebo, +, -

4. operace se vztahy (<- меньше, >- více,<=- меньше или равно, >=- větší nebo rovno,<>- nerovná se, =- rovná se).

Pořadí operací lze navíc měnit pomocí závorek. Například v logickém výrazu uspořádáme pořadí akcí:

AorBandnot (AorB)


Nejprve se provede operace nebo v závorkách, následovaná operacemi not a, nebo. Pokud místo proměnných A a B dosadíme hodnoty True a False, pak již zmíněným postupem získáme hodnotu celého výrazu rovnou True.

Cvičení 5: . Napište si do sešitu a vypočítejte význam výrazů

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

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

C) c nebo da (b=20).

Pozornost ! V Pascalu neexistuje způsob, jak zadat booleovská data pomocí operátoru čtení. Je však možné vypsat hodnoty proměnných typu Boolean pomocí operátoru write. Například, po provedení příkazu write (5>2) se na obrazovce zobrazí True.

Domácí úkoly a otázky:

1. Jak je popsána logická proměnná a jakých hodnot může nabývat?

2. Co lze zahrnout do logických výrazů. Uveďte příklady jednoduchých logických výrazů.

3. Řekněte nám o logických operacích v Pascalu. Uveďte příklady složených logických výrazů.

4. Jaká je priorita různých operací v Pascalu. Uveďte příklad.


úkoly:

№19.

A. celé číslo k je dělitelné 7;

B. Alespoň jedno z celých čísel x, y je sudé;

G. x=max(x,y,z), to znamená, že x je největší ze tří čísel x,y,z;

D. (nepoužívejte operaci not)

E. alespoň jedna z logických proměnných aab má hodnotu True;

G. obě logické proměnné a a b mají hodnotu True.

№20. Určete pořadí operací při vyhodnocování výrazů:

A) a a b nebo ne c a d; b) (x>=0) nebo ne c a d.

№21. Vyhodnoťte následující výrazy, když a=pravda, b=nepravda:

A) a nebo b a ne a; b)(a nebo b) a ne a; PROTI) ne a a b; G) ne (a a b)

№22. Vytvořte program: U přijímacích zkoušek uchazeč absolvoval fyziku, informatiku a esej. Uchazeč bude přijat, pokud získá 5 z informatiky a získá alespoň 13 bodů za tři zkoušky Je pravda, že byl přijat (výstup Pravda/nepravda)?

§ 8. Řešení úloh na téma „Lineární programy. Logické hodnoty."

Př. 7 . Vypočítejte hodnoty výrazu:

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

b) k mod 7 = k div5-1 při k=15;

c) liché(trunc(10*p)) při p=0,182;

d) není liché(n) pro n=0;

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

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

g) (x*y<>0) nebo (y>x) pro x=2, y=1;

h) a nebo (nikoli b) když a=nepravda, b=pravda;

Př. 8. Napište výraz v Pascalu, který je pravdivý, pokud je zadaná podmínka splněna, a nepravdivý v opačném případě:

a) x patří do segmentu ;

b) x leží mimo segment;

c)* x patří do segmentu nebo [-1, 1];

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

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

g) žádné z čísel x, y, z není kladné;

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

i) logická proměnná a má hodnotu True, logická proměnná b má hodnotu False;


j)* rok s pořadovým číslem y je přestupný rok (přestupný rok, pokud je jeho číslo násobkem 4, ale z násobků 100 jsou přestupnými roky pouze násobky 400, např. 1700, 1800 a 1900 nepřestupné roky, rok 2000 je přestupný rok).

Př. 9 . Nakreslete na rovinu (x, y) oblast, ve které a pouze ve které 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 (round(x)=0);

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

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

Př. 10 ..Kniha stojí X rublů. Kupující má bankovky v nominálních hodnotách 50, 10, 5, 1 rublů. Kolik a jaké účty musíte vzít, abyste zaplatili za knihu s minimálním počtem účtů?

Booleovské proměnné obvykle získávají své hodnoty prováděním porovnávání a matematických operací (probráno v předchozí lekci) a také pomocí specifických booleovských operací.

Turbo Pascal má logické operace, které platí pro proměnné logického typu. Toto jsou operace ne, a, nebo a xor. V tomto tématu se podíváte na tři logické operace. Označení a výsledky těchto operací jsou uvedeny v tabulce. Zvažte to.

Úkon ne(ne)má jeden operand a tvoří jeho logickou negaci. Výsledek operace not je False, pokud je operand pravdivý, a True, pokud je operand nepravdivý. Tak,

není pravda lež (nepravda je lež)

ne nepravda Pravda (není lež není pravdou)

Výsledek operace a(and) je pravdivé pouze tehdy, jsou-li oba jeho operandy pravdivé a ve všech ostatních případech nepravdivé.

Výsledek operace nebo(nebo) je pravdivé, pokud je některý z jeho operandů pravdivý, a nepravdivé pouze tehdy, jsou-li oba operandy nepravdivé.

Cvičení . Pokuste se určit význam booleovských operací pro příkazy:

  1. Školák zůstává o zimních prázdninách doma nebo jede někam na dovolenou.
  2. Philip Kirkorov je zpěvák a operátor kombajnu.
  3. Školáci jsou chlapci a dívky..

Logické operace, relační operace a aritmetické operace se často objevují ve stejném výrazu. V tomto případě musí být vztahy vlevo a vpravo od znaménka logické operace uzavřeny do závorek, protože logické operace mají vyšší prioritu. Obecně je akceptována následující priorita operací:

  • a, *, /, div, mod
  • nebo, +, -
  • vztahové operace..

. Logická operace a se také nazývá logické násobení a logická operace nebo se také nazývá logické sčítání.

Pořadí operací lze navíc měnit pomocí závorek. Například v logickém výrazu uspořádáme pořadí akcí

A nebo B a ne (A nebo B)

Nejprve se provede operace nebo v závorkách, následovaná operacemi not a, nebo. Pokud místo proměnných A a B dosadíme hodnoty True a False, pak již zmíněným postupem získáme hodnotu celého výrazu rovnou True.

Cvičení . Zapište si do sešitu a vypočítejte hodnoty výrazů pro a=10, b=20, c=true, d=false:

  • (a>5) a (b>5) a (a<20) and (b<30);
  • ne (a<15) or not (b<30);
  • c nebo da (b=20);

Pozornost! V Pascalu neexistuje způsob, jak zadat booleovská data pomocí operátoru čtení. Je však možné vypsat hodnoty proměnných typu Boolean pomocí operátoru write.

Například po provedení příkazu write (5>2) se na obrazovce zobrazí True.

Samostatná práce

Vyberte si se svým učitelem z níže uvedených cvičení úkol pro samostatnou práci.

  1. Vypočítejte hodnoty výrazu:

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

    b) k mod 7 = k div5-1 při k=15;

    c) liché(trunc(10*p)) při p=0,182;

    d) není liché(n) pro n=0;

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

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

    g) (x*y<>0) nebo (y>x) pro x=2, y=1;

    h) a nebo (nikoli b) když a=nepravda, b=pravda;

  2. Napište v Pascalu relaci, která je pravdivá, pokud je zadaná podmínka splněna, a v opačném případě nepravdivá:

    a) celé číslo k je dělitelné 7;

    b) bod (x, y) leží mimo kružnici o poloměru R se středem v bodě (1,0);

    c) přirozené číslo N je druhou mocninou přirozeného čísla;

    d) 0

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

    e) alespoň jedna z logických proměnných aab má hodnotu True;

    g) obě logické proměnné a a b mají hodnotu True.

  3. Určete pořadí operací při vyhodnocování výrazů:

    a) a a b nebo ne c a d;

    b) (x>=0) nebo ne c a d.

  4. Vyhodnoťte následující výrazy, když a=pravda, b=nepravda:

    a) a nebo b a ne a;

    b) (a nebo b) a nikoli a;

    c) ne a a b;

    d) ne (a a b)

  5. Napište výraz v Pascalu, který je pravdivý, pokud je zadaná podmínka splněna, a nepravdivý v opačném případě:

    a) x patří do segmentu ;

    b) x leží mimo segment;

    c)* x patří do segmentu nebo [-1, 1];

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

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

    g) žádné z čísel x, y, z není kladné;

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

    i) logická proměnná a má hodnotu True, logická proměnná b má hodnotu False;

    j)* rok s pořadovým číslem y je přestupný rok (přestupný rok, pokud je jeho číslo násobkem 4, ale z násobků 100 jsou přestupnými roky pouze násobky 400, např. 1700, 1800 a 1900 jsou nepřestupné roky, rok 2000 je přestupný rok).

  6. Nakreslete na rovinu (x, y) oblast, ve které a pouze ve které 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 (round(x)=0);

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

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

  7. Existuje podmíněný operátor:
    pokud d<>10
    pak
    writeln ("hurá!")
    jiný
    writeln('špatný...');

    Je možné jej nahradit následujícími tvrzeními:

  8. Jaké budou hodnoty proměnných j, k po provedení podmíněného příkazu:
    jestliže j>k
    pak
    j:=k-2
    jiný
    dec(k,2);
    pokud jsou počáteční hodnoty proměnných stejné:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Poznámka . V důsledku provedení operátoru dec (k,2) se hodnota proměnné k sníží o 2.