X patrí do segmentu 1 1. Téma: Booleovský dátový typ

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) k mod7 = k div5-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) pri t=pravda, p=101010;

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

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

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

2. Napíšte v jazyku Pascal vzťah, ktorý je pravdivý, ak je zadaná podmienka splnená, a inak 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;

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

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

h) aspoň jedna z logických premenných aab je pravdivá;

i) obe logické premenné a aj b sú pravdivé.

3. Zadajte poradie, v ktorom sa operácie vykonávajú pri vyhodnocovaní výrazov:

a) a a b alebo nie c a d;

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

4. Vypočítajte nasledujúce výrazy s 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) boolovská premenná a má hodnotu True, boolovská premenná b má hodnotu False;

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

6. Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí zadaný 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);

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

7) Existuje podmienený operátor:

writeln('hurá!')

writeln('zle...')

Je možné ho nahradiť nasledujúcimi výrokmi:

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('hura!'); writeln('hura!');

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 výroku dec (k,2) sa hodnota premennej k zníži o 2.

Booleovské premenné zvyčajne získavajú svoje hodnoty z porovnávacích a matematických operácií (diskutované v predchádzajúcej lekcii), ako aj zo špecifických boolovských operácií.

Turbo Pascal má logické operácie, ktoré možno aplikovať na premenné booleovského typu. Nie sú to operácie 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ý. takze

nie je pravda nepravda (nepravda je lož)

nie je nepravda Pravda (nepravda je pravda)

Výsledok operácie a(i) je pravdivé iba vtedy, ak sú oba jeho operandy pravdivé a v opačnom prípade nepravdivé.

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 si ide niekam oddýchnuť.
  2. Philip Kirkorov je spevák a operátor kombajnov.
  3. Školáci sú chlapci a dievčatá.

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

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

. 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átor v zátvorkách alebo operátor sa vykoná ako prvý, za ním nasledujú operátory not a, alebo. Ak namiesto premenných A a B dosadíme hodnoty True a False, potom pomocou už uvažovaného postupu dostaneme hodnotu celého výrazu rovnú True.

Cvičenie . Napíš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 Pascal neexistuje spôsob, ako zadať boolovské údaje pomocou príkazu read. Výstup hodnôt premenných typu boolean sa však poskytuje pomocou operátora zápisu.

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) k mod7 = k div5-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) pri t=pravda, p=101010;

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

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

    h) a alebo (nie b) s 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 je pravdivá;

    g) obe logické premenné a aj b sú pravdivé.

  3. Zadajte poradie, v ktorom sa operácie vykonávajú 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 s 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) boolovská premenná a má hodnotu True, boolovská premenná b má hodnotu False;

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

  6. Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí zadaný 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);

    e) (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 výrokmi:

  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 výroku dec (k,2) sa hodnota premennej k zníži o 2.

. 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í príkazov:
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í príkazov:
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í príkazov:
int z = 0, x = 3, y = 1;
if (x) (ak (y) z=1;) inak z=2;
9.
Uveďte chyby v nasledujúcich vyhláseniach:
ak (1
elsex=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á sa porušujú a ako sa dajú opraviť chyby?


81
3.4
Jednotlivé úlohy pre sekciu 3
Každý študent potrebuje vyriešiť dva problémy prvej a druhej úrovne zložitosti.
Úlohy prvej úrovne zložitosti.
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. číslice sa rovná súčinu 2. a 3. číslice.
2.
Sú dané reálne čísla x, y. Ak sú x a y záporné, nahraďte každú hodnotu jej modulom; ak je iba jedna z nich záporná, zvýšte obe hodnoty o 5,5; v ostatných prípadoch by sa obe hodnoty mali znížiť 10-krát.
3.
Sú dané reálne čísla x, y. Ak sú x a y kladné, znížte každú hodnotu o faktor 5; ak sú obe hodnoty v rozsahu [-3, 9], obe hodnoty by sa mali nahradiť 0; inak sa x a y zväčšia o 3.
4.
Sú dané reálne čísla x, y (xy). Menšie z týchto dvoch čísel nahraďte 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, potom najmenšie z týchto troch čísel je nahradené 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 dvoch zostávajúcich hodnôt.
6.
Sú 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 ich druhými.
7.
Zistite, či je šesťmiestne celé číslo šťastné. (Čí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 dvoch posledných čísel.
10.
Niektoré školy majú nasledujúce pravidlá prijímania. Uchádzači absolvujú dve skúšky, ktoré sú klasifikované podľa
100 bodov každý. Ak žiadateľ získa najmenej 150 bodov, dáva to právo vstúpiť do denného oddelenia, od 100 do 149 - do večerného oddelenia; 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áve na zápis.
11.
Napíšte program pomocou operátora výberu , ktorý vám umožní získať slovný popis 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 sú číslice daného trojciferného čísla rovnaké.
13.
Napíšte program, ktorý vytlačí pravda ak dátum d1, m1 predchádza (do jedného roka) dátumu d2, m2 a zmysel falošné inak.
14.
Napíšte program pomocou príkazu select, ktorý zobrazí celé meno prvým písmenom mena.
(Ivan, Peter, Nikolaj, Vladimír, Juraj).
15.
Napíšte program pomocou výberového operátora, ktorý, ak je zadaná číslica 0≤ k≤ 5 vytlačí názov tejto postavy v ruštine a angličtine.
16.
Dané celé číslo k (1

k

365). Určte, či k-tým dňom 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ípady
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ípady
zvyšok
v
X
X
X
pri
X
X
X
pri
f
19.
Napíšte program pomocou vybraného operátora, ktorý podľa prvého písmena názvu mesta zobrazí celý názov mesta (Kursk, Moskva, Tula, Novgorod, Voronež).
20.
Napíšte program pomocou príkazu select, ktorý zobrazí celé meno prvým písmenom priezviska (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Dané 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 príkazu select, ktorý vytlačí celé meno zvieraťa (pes, mačka, žirafa, kôň, opica) s prvým písmenom mena zvieraťa.
23.
Dané tri odlišné čísla a,b,c. Zoraďte tieto čísla vo vzostupnom poradí tak, aby a zodpovedá najmenšiemu číslu, b- priemerný počet, c- najväčší.
24.
Napíšte program pomocou príkazu select, ktorý číslom (od 1 do 7) zobrazí názov dňa v týždni.
25.
Napíšte program pomocou príkazu select, ktorý číslom (od 1 do 12) zobrazí názov mesiaca v roku.
26.
Napíšte program pomocou príkazu select, ktorý po začiatočnom písmene 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. číslice je väčší ako súčin 2. a 4. číslice.
28.
Dostanete štvormiestne kladné celé číslo. Napíšte program, ktorý vytlačí pravda alebo falošné podľa toho či

84 Programovanie lineárnych algoritmov v systéme C++ Builder či je alebo nie je splnená špecifikovaná podmienka: aritmetický priemer 1 a
4 číslice sú viac ako súčet 2 a 3 číslic.
29.
Daná číslica a trojciferné číslo v desiatkovej 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á číslica a trojciferné číslo v desiatkovej 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
Úlohy druhej úrovne zložitosti.
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 najmladšia, inak
- v angličtine.
2.
Dané je dvojciferné kladné celé čí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.
Dané je dvojciferné kladné celé číslo v päťcifernej číselnej sústave. Napíšte program, ktorý vypíše názvy číslic čísla v angličtine, ak je najvyššia číslica čísla presne 2-násobkom najnižšej číslice, 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.
Dané je dvojciferné kladné celé číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine.
6.
Dané je dvojciferné kladné celé číslo v osmičkovej číselnej sústave. Napíšte program, ktorý zobrazí názvy číslic čísla v ruštine.
7.
Dané je dvojciferné kladné celé číslo v osmičkovej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica menšia ako polovica najnižšej číslice, názvy číslic čísla v angličtine, inak

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

v ruštine.
9.
V desiatkovej sústave čísel dostanete dve číslice. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto číslic v angličtine.
10.
V desiatkovej sústave čísel dostanete dve číslice. Napíšte program, ktorý zobrazí názvy číslic súčinu týchto číslic v ruštine.
11.
V desiatkovej sústave čísel dostanete dve číslice. Napíšte program, ktorý zobrazí názov číslice modulu rozdielu týchto číslic v ruštine.
12.
V desiatkovej sústave čísel dostanete dve číslice. Napíšte program, ktorý zobrazí názvy číslic v angličtine kvocientu a zvyšok celočíselného delenia týchto čísel.
13.
Dané je dvojciferné kladné celé číslo v desiatkovej sústave čísel. Napíšte program, ktorý zobrazí, ak je najvyššia číslica trojnásobkom najnižšej číslice, názvy číslic čísla v angličtine, inak

v ruštine.
14.
Dané je dvojciferné kladné celé číslo v desiatkovej sústave čísel. Napíšte program, ktorý v angličtine vypíše názov číslice čísla, ktoré má väčšiu hodnotu, 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é je dvojciferné kladné celé číslo v septimálnej číselnej sústave. Napíšte program, ktorý v angličtine vypíše názov číslice čísla, ktoré má väčšiu hodnotu, a názov číslice čísla, ktoré má menšiu hodnotu,

v ruštine.
16.
Dané je dvojciferné kladné celé číslo v hexadecimálnej číselnej 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.
V binárnej číselnej sústave sú dané dve dvojciferné kladné celé čísla. Napíšte program, ktorý zobrazí názvy číslic súčtu týchto čísel v angličtine.
19.
Dané je dvojciferné kladné celé číslo v päťcifernej číselnej sústave. Napíšte program, ktorý zobrazí, ak sú číslice vo vzostupnom poradí, názvy číslic čísla v angličtine, inak

v ruštine.
20.
Dané je dvojciferné kladné celé číslo v hexadecimálnej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica päťkrát 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 týchto číslic 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é je dvojciferné kladné celé číslo v septimálnej číselnej sústave. Napíšte program, ktorý zobrazí, ak je najvyššia číslica trikrát najnižšia, názvy číslic čísla v ruštine, inak

v angličtine.
24.
Dané je 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 poradie číslice čísla, ktoré má najnižšiu hodnotu,

v angličtine.
25.
Dané je dvojciferné kladné celé číslo v septimálnej číselnej sústave. Napíšte program, ktorý zobrazí názov číslic čísla, ktoré má v ruštine hodnotu menšiu ako 4, a názov číslic čísla, ktoré má hodnotu väčšiu alebo rovnú 4,

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

v angličtine.
27.
Vzhľadom na 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.
Vzhľadom na prvé dve písmená (malé aj veľké písmená sa nerozlišujú veľké a malé 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.
V starom japonskom kalendári bol prijatý 60-ročný cyklus, ktorý pozostával 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: potkany, kravy, tigre, zajac, draci, hady, kone, ovce, opice, sliepky, psy a ošípané (1984 – rok zeleného potkana – bol začiatkom r. ďalší 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é je dvojciferné kladné celé číslo v desiatkovej sústave čísel. Napíšte program, ktorý zobrazí názov číslic čísla, ktoré má hodnotu väčšiu ako 5 v ruštine, a názov číslic čísla, ktoré má hodnotu menšiu alebo rovnú 5,

v angličtine.

88 Programovanie lineárnych algoritmov v systéme C++ Builder
4 PROGRAMOVANIE CYKLU
ALGORITHMY V SYSTÉME C++BUILDER
V tejto časti sa vykonáva štúdia operátorov 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 príkazy cyklu:
1.
Slučka s predbežnou podmienkou ( zatiaľ čo);
2.
Slučka s dodatočnou podmienkou ( robiť);
3.
Slučka s počítadlom ( pre).
Príkaz slučky s predbežnou podmienkou zatiaľ čo (Obrázok 4.1):
zatiaľ čo(stav) (telo slučky)
Obrázok 4.1

Schéma algoritmu operátora slučky zatiaľ čo
Ak je výsledkom hodnotenia stavu pravda(true), potom sa vykoná telo slučky a znova sa vykoná prechod na kontrolu stavu. Ak je výsledkom hodnotenia stavu falošné(false), potom sa cyklus opustí a preskočí na príkaz nasledujúci za cyklickým príkazom 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 medzi 1 a 10.
( int k = 1, s = 0; zatiaľ čo (k ( s + = k; k + = 2;
}
}
Príkaz 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 operátora slučky robiť...zatiaľ
Podmienka je výraz boolovského typu, telo cyklu je jeden jednoduchý alebo zložený príkaz.
Telo cyklu príkazu

Premenné typu boolean sú opísané identifikátorom Boolean . Môžu mať iba dve hodnoty - Nepravdivé (nepravda) a Pravda (pravda). Sú tiež popísané v časti deklarácie premenných. Var<имя>: Boolean;

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

n boolovské hodnoty,

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

n logické operácie A, Alebo, Nie

n rozdiel akcie a funkcie


Turbo Pascal má logické operácie, ktoré možno aplikovať na premenné booleovského typu. Nie sú to operácie 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 (nepravda je pravda).

Výsledok operácie a(i) je pravdivé iba vtedy, ak sú oba jeho operandy pravdivé, a nepravdivé vo všetkých ostatných prípadoch (boolovské 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é, relačné a aritmetické operácie sa často vyskytujú v rovnakom výraze. V tomto prípade musia byť vzťahy vľavo a vpravo od znamienka logickej operácie uzavreté v zátvorkách, pretože logické operácie majú vyššiu prioritu. Vo všeobecnosti sa prijímajú tieto priority operácií:

2. a, *, /, div, mod

3. alebo, +, -

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

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

AorBandnot(AorB)


Operátor v zátvorkách alebo operátor sa vykoná ako prvý, za ním nasledujú operátory not a, alebo. Ak namiesto premenných A a B dosadíme hodnoty True a False, potom pomocou už uvažovaného postupu dostaneme hodnotu celého výrazu rovnú True.

Cvičenie 5: . Napíšte do poznámkového bloku a vypočítajte hodnoty 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 Pascal neexistuje spôsob, ako zadať boolovské údaje pomocou príkazu read. Výstup hodnôt premenných typu boolean sa však poskytuje pomocou operátora zápisu. napríklad, po vykonaní operátora zápisu (5>2) sa na obrazovke zobrazí True.

Domáce otázky a úlohy:

1. Ako je opísaná booleovská 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;

C. 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žívať, neprevádzkovať)

E. aspoň jedna z logických premenných aab je pravdivá;

G. Booleovské premenné a a b sú obe pravdivé.

№20. Zadajte poradie, v ktorom sa operácie vykonávajú 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 s 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. Urobte si program: Na prijímacích skúškach uchádzač absolvoval fyziku, informatiku, kompozíciu. Uchádzač sa prihlási, ak získa z informatiky 5 a získa aspoň 13 bodov za tri skúšky. Je pravda, že sa prihlásil (tlač Pravda / Nepravda)?

§ 8. Riešenie úloh na tému „Lineárne programy. Booleovské množstvá."

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

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

b) k mod7 = k div5-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) pri t=pravda, p=101010;

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

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

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

Napr. osem. 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) boolovská premenná a má hodnotu True, boolovská premenná b má hodnotu False;


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

Napr. deväť . Nakreslite na rovinu (x, y) oblasť, v ktorej a len v ktorej platí zadaný 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);

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

Napr. desať ..Kniha stojí X rubľov. Kupujúci má bankovky v nominálnych hodnotách 50, 10, 5, 1 rubľov. Koľko a akých bankoviek je potrebné zobrať, aby ste za knihu zaplatili minimálnym počtom bankoviek?