Loģiskās izteiksmes.  Tēma: Būla datu tips

Loģiskās izteiksmes. Tēma: Būla datu tips

. X pieder segmentam ;
x atrodas ārpus segmenta;
x pieder segmentam vai [-1,1];
x atrodas ārpus segmenta vai [-1,1].
3.
Izskaidrojiet nosacījumu priekšrakstu izpildes struktūru un noteikumus.
4.
Uzrakstiet norādīto darbību kā vienu nosacījuma paziņojumu:
cos
2
x, pie 0x plkst =
1-grēks
2
x, citādi.
5.
z
int z=0, x=1, y=

1;

80 Lineāro algoritmu programmēšana sistēmā C++ Builder
ja (x>0), ja (y>0) z=1; citādi z=2;
6.
Kāda būs mainīgā vērtība? z pēc operatoru izpildes:
int z=0, x=

1, y=1;
ja (x) ( ja (y>0) z=1;) else z=2;
7.
Kāda būs mainīgā vērtība? z pēc operatoru izpildes:
int z=0, x=0, y=1;
ja (x) ( ja (y>0) z=1;) else z=2;
8.
Kāda būs mainīgā vērtība? z pēc operatoru izpildes:
int z=0, x=3, y=1;
ja (x) (ja (y) z=1;) else z=2;
9.
Lūdzu, norādiet kļūdas šādos apgalvojumos:
ja (1
citādi x=0; y+= 1;
10.
int z=0, x=0, y=1;
if (!x) ( if (!(y

1)) z=1;) cits z=2;
11.
Kāda vērtība būs mainīgajam z pēc paziņojumu izpildes:
int z=0, x=1, y=1;
if (!x) ( if (!(y

1)) z=1;) cits z=2;
12.
Atrodiet kļūdas programmas fragmentā:
(int n,x; slēdzis (k) case + : x:=x-4 break; case

-

,

*

, x=5;
}
Kādi noteikumi tika pārkāpti un kā kļūdas var labot?


81
3.4
Individuālie uzdevumi 3. sadaļai
Katram studentam jāatrisina divas pirmās un otrās sarežģītības pakāpes problēmas.
Pirmās grūtības pakāpes problēmas.
1.
Jums tiek dots četrciparu pozitīvs vesels skaitlis. Uzrakstiet programmu, kas drukā taisnība vai viltus atkarībā no tā, vai norādītais nosacījums ir izpildīts vai nē: 1 un 4 ciparu summa ir vienāda ar 2 un 3 ciparu reizinājumu.
2.
Doti reāli skaitļi x, y. Ja x un y ir negatīvi, tad katru vērtību aizstāj ar tās moduli; ja tikai viens no tiem ir negatīvs, tad palieliniet abas vērtības par 5,5; citos gadījumos samaziniet abas vērtības 10 reizes.
3.
Doti reāli skaitļi x, y. Ja x un y ir pozitīvi, tad katru vērtību samaziniet 5 reizes; ja abas vērtības ir diapazonā [-3, 9], abas vērtības aizstājiet ar 0; citos gadījumos palieliniet x un y par 3.
4.
Doti reāli skaitļi x, y (xy). Aizstāt mazāko no šiem diviem skaitļiem ar to pussummu un lielāko ar dubultreizinājumu.
5.
Ja trīs pāros atšķirīgu reālo skaitļu x, y, z summa ir mazāka par 1, tad mazāko no šiem trim skaitļiem aizstāj ar pārējo divu pussummu; pretējā gadījumā aizstājiet mazāko no x un y ar atlikušo divu vērtību pusi summu.
6.
Doti reāli skaitļi a, b, c, d. Ja b>c>d, pēc tam atstājiet skaitļus nemainītus; pretējā gadījumā aizstājiet visus skaitļus ar kvadrātiem.
7.
Nosakiet, vai sešciparu vesels skaitlis ir laimīgs. (Ciparu sauc par laimīgo, ja tā pirmo trīs ciparu summa ir vienāda ar tā pēdējo trīs ciparu summu.)
8.
taisnība vai viltus atkarībā no tā, vai norādītais nosacījums ir izpildīts vai nē: patvaļīgiem reāliem skaitļiem a, b, c nosaka, vai vienādojums ax
2
+bx+c=0 vismaz viens reāls risinājums.

82 Lineāro algoritmu programmēšana sistēmā C++ Builder
9.
Lai atrisinātu šo problēmu, uzrakstiet programmu, kas drukā taisnība vai viltus atkarībā no tā, vai noteiktais nosacījums ir izpildīts vai nē: nosakiet, vai dotā četrciparu skaitļa pirmo divu ciparu summa ir vienāda ar tā pēdējo divu skaitļu summu.
10.
Dažās izglītības iestādēs ir šādi uzņemšanas noteikumi. Pretendenti kārto divus eksāmenus, kurus vērtē pēc
100 punkti katram. Ja pretendents iegūst vismaz 150 punktus, tas dod tiesības iestāties pilna laika nodaļā, no 100 līdz 149 - vakara nodaļā; zem 100 ballēm nozīmē atteikumu uzņemties studijās. Uzrakstiet programmu, kas atkarībā no iegūto punktu daudzuma informē pretendentu par viņa tiesībām uz uzņemšanu.
11.
Uzrakstiet programmu, izmantojot atlases operatoru, lai iegūtu verbālu atzīmju aprakstu. (1 – “slikti”, 2 –
“neapmierinoši”, 3 – “apmierinoši”, 4 – “labi”, 5 –
"Lieliski".)
12.
Lai atrisinātu šo problēmu, uzrakstiet programmu, kas drukā taisnība vai viltus atkarībā no tā, vai noteiktais nosacījums ir izpildīts vai nē: nosaka, vai starp dotā trīsciparu skaitļa cipariem ir identiski.
13.
Uzrakstiet programmu, kas drukā taisnība, ja datums d1, m1 ir pirms (gada laikā) datuma d2, m2 un nozīme viltus citādi.
14.
Uzrakstiet programmu, izmantojot atlases operatoru, kas, pamatojoties uz vārda pirmo burtu, ekrānā parāda pilnu vārdu
(Ivans, Pēteris, Nikolajs, Vladimirs, Georgijs).
15.
Uzrakstiet programmu, izmantojot atlases operatoru, kas, pamatojoties uz ievadīto ciparu, 0≤ k≤ 5 izdrukā šī numura nosaukumu krievu un angļu valodā.
16.
Dots vesels skaitlis k (1

k

365). Nosakiet, vai gada k-tā diena būs nedēļas nogale vai darba diena, ja 1. janvāris ir pirmdiena.
17.
Dots reāls skaitlis x. Aprēķināt f, Ja:











grēks
,
1 0
,
0 5
2 11 2
gadījumiem
Pārējie
V
x
x
x
plkst
x
x
x
plkst
f

Programmēšana ar viendimensiju masīviem
83 18.
Dots reāls skaitlis x. Uzrakstiet programmu, lai aprēķinātu f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
gadījumiem
Pārējie
V
x
x
x
plkst
x
x
x
plkst
f
19.
Uzrakstiet programmu, izmantojot atlases operatoru, kas, pamatojoties uz pilsētas nosaukuma pirmo burtu, parāda pilnu pilsētas nosaukumu (Kurska, Maskava, Tula, Novgoroda, Voroņeža).
20.
Uzrakstiet programmu, izmantojot atlases operatoru, kas, pamatojoties uz uzvārda pirmo burtu, parāda pilnu uzvārdu (Ivanovs, Petrovs, Sidorovs, Myshkin, Shishkin).
21.
Ir dotas centra koordinātas un apļa rādiuss. Nosakiet, vai noteikts punkts ar koordinātām (x,y) pieder aplim.
22.
Uzrakstiet programmu, izmantojot atlases operatoru, kas, pamatojoties uz ievadītā dzīvnieka vārda pirmo burtu, izdrukās pilnu dzīvnieka vārdu (suns, kaķis, žirafe, zirgs, mērkaķis).
23.
Doti trīs dažādi skaitļi a,b,c. Sakārtojiet šos skaitļus augošā secībā, lai a atbilda mazākajam skaitlim b- vidējais skaitlis, c- labākais.
24.
Uzrakstiet programmu, izmantojot atlases operatoru, kas parāda nedēļas dienas nosaukumu pēc skaitļa (no 1 līdz 7).
25.
Uzrakstiet programmu, izmantojot atlases operatoru, kas parāda gada mēneša nosaukumu pēc skaitļa (no 1 līdz 12).
26.
Izmantojot atlases operatoru, uzrakstiet programmu, kas, pamatojoties uz ievadīto gada sezonas nosaukuma pirmo burtu, izdrukā gada sezonas pilnu nosaukumu.
27.
Jums tiek dots piecu ciparu pozitīvs vesels skaitlis. Uzrakstiet programmu, kas drukā taisnība vai viltus atkarībā no tā, vai norādītais nosacījums ir izpildīts vai nē: 1, 3 un 5 ciparu summa ir lielāka nekā 2 un 4 ciparu reizinājums.
28.
Jums tiek dots četrciparu pozitīvs vesels skaitlis. Uzrakstiet programmu, kas drukā taisnība vai viltus atkarībā no

84 Lineāro algoritmu programmēšana sistēmā C++ Builder vai noteiktais nosacījums ir izpildīts vai nē: vidējais aritmētiskais 1 un
4 cipari ir lielāki par 2 un 3 ciparu summu.
29.
Dots cipars un trīsciparu skaitlis decimālo skaitļu sistēmā. Ja cipars atbilst skaitļa augstākajam ciparam, tad aprēķiniet skaitļa ciparu summu. Ja cipars sakrīt ar skaitļa vidējo ciparu, tad aprēķiniet skaitļa ciparu reizinājumu. Ja cipars sakrīt ar skaitļa mazāk zīmīgo ciparu, tad aprēķiniet skaitļa ciparu vidējo aritmētisko. Ja neviens no nosacījumiem nav izpildīts, tad aprēķiniet skaitļa ciparu ģeometrisko vidējo.
30.
Dots cipars un trīsciparu skaitlis decimālo skaitļu sistēmā. Ja cipars sakrīt ar skaitļa augstāko ciparu, tad aprēķiniet skaitļa ciparu vidējo aritmētisko. Ja cipars sakrīt ar skaitļa vidējo ciparu, tad aprēķiniet skaitļa ciparu ģeometrisko vidējo. Ja cipars sakrīt ar skaitļa mazāk zīmīgo ciparu, tad aprēķiniet skaitļa ciparu summu. Ja neviens no nosacījumiem nav izpildīts, tad aprēķiniet skaitļa ciparu reizinājumu
Otrā sarežģītības līmeņa problēmas.
1.
Dots divciparu pozitīvs vesels skaitlis trīskāršā skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus krievu valodā, ja skaitļa augstākais cipars ir lielāks par mazāko, pretējā gadījumā
- angliski.
2.
Tiek dots vesels divciparu pozitīvs skaitlis piecciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus angļu valodā, ja skaitļa augstākais cipars ir lielāks par mazāko, pretējā gadījumā
- krieviski.
3.
Tiek dots vesels divciparu pozitīvs skaitlis piecciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus angļu valodā, ja skaitļa augstākais cipars ir tieši 2 reizes lielāks par mazāko, pretējā gadījumā
- krieviski.
4.
Dots divciparu pozitīvs vesels skaitlis trīskāršā skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus krievu valodā, ja skaitļa augstākais cipars ir mazāks par mazāko, pretējā gadījumā
- angliski.

Programmēšana ar viendimensiju masīviem
85 5.
Tiek dots vesels divciparu pozitīvs skaitlis piecciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus krievu valodā.
6.
Dots vesels divciparu pozitīvs skaitlis oktālo skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus krievu valodā.
7.
Dots vesels divciparu pozitīvs skaitlis oktālo skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus angļu valodā, ja galvenais cipars ir mazāks par pusi mazākā cipara.

krieviski.
8.
Tiek dots vesels divciparu pozitīvs skaitlis starpsienas skaitļu sistēmā. Uzrakstiet programmu, kas parāda, ja skaitļi ir dilstošā secībā, skaitļa ciparu nosaukumus angļu valodā, pretējā gadījumā

krieviski.
9.
Decimālskaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda šo ciparu summas ciparu nosaukumus angļu valodā.
10.
Decimālskaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda šo skaitļu reizinājuma numuru nosaukumus krievu valodā.
11.
Decimālskaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda šo ciparu starpības moduļa ciparu nosaukumu krievu valodā.
12.
Decimālskaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda ciparu nosaukumus angļu valodā šo skaitļu veselā skaitļa dalījuma koeficientam un atlikumam.
13.
Dots divciparu pozitīvs vesels skaitlis deviņu ciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus angļu valodā, ja lielākais cipars ir trīs reizes lielāks par mazāko ciparu, pretējā gadījumā

krieviski.
14.
Dots divciparu pozitīvs vesels skaitlis deviņu ciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa cipara nosaukumu, kam ir lielāka vērtība, angļu valodā un cipara nosaukumu, kuram ir mazāka vērtība.

krieviski.

86 Lineāro algoritmu programmēšana sistēmā C++ Builder
15.
Dots divciparu pozitīvs vesels skaitlis starpsienas skaitļu sistēmā. Uzrakstiet programmu, kas parāda lielākas vērtības cipara nosaukumu angļu valodā un mazāka skaitļa cipara nosaukumu.

krieviski.
16.
Dots divciparu pozitīvs vesels skaitlis heksadecimālajā skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus angļu valodā.
17.
Doti divi veseli divciparu pozitīvi skaitļi trīskāršā skaitļu sistēmā. Uzrakstiet programmu, kas parāda šo skaitļu summas ciparu nosaukumus krievu valodā.
18.
Doti divi veseli divciparu pozitīvi skaitļi binārajā skaitļu sistēmā. Uzrakstiet programmu, kas parāda šo skaitļu summas ciparu nosaukumus angļu valodā.
19.
Dots divciparu pozitīvs vesels skaitlis piecciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda, ja skaitļi ir sakārtoti augošā secībā, skaitļa ciparu nosaukumus angļu valodā un citādi

krieviski.
20.
Dots divciparu pozitīvs vesels skaitlis heksadecimālajā skaitļu sistēmā. Uzrakstiet programmu, kas parāda, ja augstākais cipars ir piecas reizes lielāks par mazāko, skaitļa ciparu nosaukumus krievu valodā, pretējā gadījumā

angliski.
21.
Astotnieku skaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda šo ciparu starpības moduļa ciparu nosaukumus krievu valodā.
22.
Astotnieku skaitļu sistēmā ir norādīti divi cipari. Uzrakstiet programmu, kas parāda šo divu ciparu summas ciparu nosaukumus krievu valodā.
23.
Dots divciparu pozitīvs vesels skaitlis starpsienas skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa ciparu nosaukumus krievu valodā, ja lielākais cipars ir trīs reizes lielāks par zemāko ciparu, pretējā gadījumā

angliski.
24.
Dots divciparu pozitīvs vesels skaitlis oktālo skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa cipara nosaukumu, kam ir lielāka vērtība krievu valodā un valodā

Programmēšana ar viendimensiju masīviem
87 ir skaitļa cipara rangs, kuram ir viszemākā vērtība,

angliski.
25.
Dots divciparu pozitīvs vesels skaitlis starpsienas skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa, kura vērtība ir mazāka par 4, ciparu nosaukumu krievu valodā un skaitļa ciparu nosaukumu, kura vērtība ir lielāka vai vienāda ar 4,

angliski.
26.
Dots divciparu pozitīvs vesels skaitlis heksadecimālajā skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa, kura vērtība ir mazāka par 3, ciparu nosaukumu krievu valodā un skaitļa ciparu nosaukumu, kura vērtība ir lielāka vai vienāda ar 3,

angliski.
27.
Tiek doti gada mēneša nosaukuma pirmie divi burti (nejutīgi, gan mazie, gan lielie). Uzrakstiet programmu, kas parāda pilnu gada mēneša nosaukumu krievu valodā.
28.
Tiek doti pirmie divi nedēļas dienas nosaukuma burti (nejutīgi, gan mazie, gan lielie). Uzrakstiet programmu, kas parāda pilnu nedēļas dienas nosaukumu krievu valodā.
29.
Vecais japāņu kalendārs pieņēma 60 gadu ciklu, kas sastāv no pieciem 12 gadu apakšcikliem. Apakšcikli tika apzīmēti ar krāsu nosaukumiem: zaļa, sarkana, dzeltena, balta un melna. Katrā apakšciklā gadi tika nosaukti dzīvnieku vārdā: žurka, govs, tīģeris, zaķis, pūķis, čūska, zirgs, aita, pērtiķis, vista, suns un cūka (1984. gads – zaļās žurkas gads – bija nākamā sākums cikls). Uzrakstiet programmu, kas ievada noteikta gada AD numuru un izdrukā tā nosaukumu pēc vecā japāņu kalendāra.
30.
Dots divciparu pozitīvs vesels skaitlis deviņu ciparu skaitļu sistēmā. Uzrakstiet programmu, kas parāda skaitļa, kura vērtība ir lielāka par 5, ciparu nosaukumu krievu valodā un skaitļa ciparu nosaukumu, kura vērtība ir mazāka vai vienāda ar 5,

angliski.

88 Lineāro algoritmu programmēšana sistēmā C++ Builder
4 PROGRAMĒŠANAS CIKLIS
ALGORITMI C++BUILDER SISTĒMĀ
Šajā sadaļā ir apskatīti valodu cilpas operatori
C++, ciklisko algoritmu programmēšanas prasmju apguve, ievads
jā, programmu kompilēšana un atkļūdošana.
4.1
Pamatjēdzieni
Uz mēles C++ Builder Ir trīs cilpas operatori:
1.
Cilpa ar priekšnosacījumu ( kamēr);
2.
Cilpa ar pēcnosacījumu ( darīt);
3.
Cilpa ar skaitītāju ( priekš).
Cilpas operators ar priekšnosacījumu kamēr (4.1. attēls):
kamēr(stāvoklis) (cilpas korpuss)
4.1.attēls

Cilpas operatora algoritma diagramma kamēr
Ja nosacījuma aprēķināšanas rezultāts ir taisnība(patiess), tad tiek izpildīts cilpas pamatteksts un vēlreiz tiek veikta pāreja uz stāvokļa pārbaudi. Ja nosacījuma aprēķināšanas rezultāts ir viltus(false), tad cilpa iziet un pāriet uz operatoru, kas seko cikliskajam operatoram kamēr.
Ja pirms pirmās cilpas izpildes izteiksmes vērtība bija viltus, cilpas pamatteksts vispār netiek izpildīts un notiek pāreja uz nākamo paziņojumu.
Stāvoklis
Cilpas korpuss


Programmēšana ar viendimensiju masīviem
89
Piemērs:
Aprēķiniet nepāra skaitļu summu diapazonā no 1 līdz 10.
( int k=1, s=0; while (k ( s+=k; k+=2;
}
}
Cilpas operators ar pēcnosacījumu darīt (4.2. attēls):
darīt(cilpas korpuss) kamēr(stāvoklis); jā nav nosacījuma
Cilpas korpuss
4.2.attēls

Cilpas operatora algoritma diagramma darīt kamēr
Nosacījums ir loģiska tipa izteiksme, cilpas pamatteksts ir viens vienkāršs vai salikts paziņojums.
Paziņojuma cilpas korpuss

Kopā ar savu skolotāju no tālāk norādītajiem uzdevumiem izvēlieties uzdevumu patstāvīgam darbam.

1. Aprēķiniet izteiksmes vērtības:

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

b) k mod 7 = k div5-1 pie k=15;

c) nepāra(trunc(10*p)) pie p=0,182;

d) nav nepāra(n), ja n=0;

e) t un (p mod 3=0) ar t=true, p=101010;

e) (x*y<>0) un (y>x), ja x=2, y=1;

g) (x*y<>0) vai (y>x), ja x=2, y=1;

h) a vai (nav b), ja a = nepatiess, b = patiess;

2. Paskalā ierakstiet relāciju, kas ir patiesa, ja ir izpildīts norādītais nosacījums, un nepatiesa pretējā gadījumā:

a) vesels skaitlis k dalās ar 7;

b) vienādojumam nav reālu sakņu;

c) punkts (x, y) atrodas ārpus apļa ar rādiusu R un centrs atrodas punktā (1,0);

d) naturālais skaitlis N ir naturālā skaitļa kvadrāts;

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

un) (neizmantojiet neoperāciju)g

h) vismaz vienam no loģiskajiem mainīgajiem a un b ir vērtība True;

i) gan loģiskajiem mainīgajiem a, gan b ir vērtība True.

3. Aprēķinot izteiksmes, norādiet darbību secību:

a) a un b vai ne c un d;

b) (x>=0) vai ne c un d.

4. Aprēķiniet šādas izteiksmes, ja a=True, b=False:

a) a vai b, nevis a;

b) (a vai b), nevis a;

c) nevis a un b;

d) nav (a un b)

5. Uzrakstiet izteiksmi Paskālā, kas ir patiesa, ja ir izpildīts norādītais nosacījums, un nepatiesa pretējā gadījumā:

a) x pieder segmentam ;

b) x atrodas ārpus segmenta;

c)* x pieder segmentam vai [-1, 1];

d)* x atrodas ārpus segmentiem un [-1, 1];

e) katrs no skaitļiem x, y, z ir pozitīvs;

g) neviens no skaitļiem x, y, z nav pozitīvs;

h) tikai viens no skaitļiem x, y, z ir pozitīvs;

i) loģiskajam mainīgajam a ir vērtība True, loģiskajam mainīgajam b ir vērtība False;

j)* gads ar kārtas numuru y ir garais gads (garais gads, ja tā skaitlis ir reizināts ar 4, bet no 100 reizinātājiem tikai 400 reizinātāji ir garie gadi, piemēram, 1700, 1800 un 1900 ir ne garie gadi, 2000. ir garais gads).

6. Uzzīmējiet plaknē (x, y) apgabalu, kurā un tikai kurā norādītā izteiksme ir patiesa:

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

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

c) (trunc(y)=0 un (round(x)=0);

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

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

7) Ir nosacīts operators:

writeln ('urrā!')

rakstīts ("slikti...")

Vai ir iespējams to aizstāt ar šādiem apgalvojumiem:

a) ja d=10 b) ja nē (d=10)

writeln ('urrā!') writeln ('urrā!')

writeln('slikti...'); writeln('slikti...');

c) ja nē (d=10) d) ja nav (d<>10)

writeln ('slikti...') writeln ('slikti...')

writeln('urrā!'); writeln('urrā!');

8) Kādas būs mainīgo j, k vērtības pēc nosacījuma priekšraksta izpildes:

ja mainīgo sākotnējās vērtības ir vienādas:

Piezīme. Dec (k,2) operatora izpildes rezultātā mainīgā k vērtība tiek samazināta par 2.

Būla tipa mainīgie tiek aprakstīti, izmantojot identifikatoru Būla . Viņiem var būt tikai divas nozīmes - Nepatiesi (meli) Un Taisnība (patiesa). Tie ir aprakstīti arī mainīgā apraksta sadaļā. Var<имя>: Būla;

Loģiskās izteiksmes var ietvert:

n loģiskās vērtības,

n relāciju operācijas (<- меньше, >- vairāk,<=- меньше или равно, >=- lielāks vai vienāds ar,<>- nav vienāds, =- vienāds).

n loģiskās operācijas Un, Or, Not

n dec. darbības un funkcijas


Turbo Pascal ir loģiskas darbības, kas attiecas uz loģiskā tipa mainīgajiem. Šīs ir darbības nevis, un, vai un xor.

Darbība (nav) ir viens operands un veido tā loģisko noliegumu. Operācijas not rezultāts ir False, ja operands ir patiess, un True, ja operands ir nepatiess. Tātad, nevis patiess Nepatiess (nepatiesība ir meli), nevis nepatiess patiess (nevis meli ir patiesība).

Operācijas rezultāts un(un) ir patiess tikai tad, ja abi tā operandi ir patiesi, un nepatiesi visos citos gadījumos (loģiskā reizināšana).

Operācijas rezultāts vai(vai) ir patiess, ja kāds no tā operandiem ir patiess, un nepatiess tikai tad, ja abi operandi ir nepatiesi (loģisks papildinājums).

Loģiskās darbības, relāciju darbības un aritmētiskās darbības bieži parādās vienā izteiksmē. Šajā gadījumā attiecības pa kreisi un pa labi no loģiskās darbības zīmes ir jāiekļauj iekavās, jo loģiskajām operācijām ir augstāka prioritāte. Kopumā tiek pieņemta šāda darbību prioritāte:

2. un, *, /, div, mod

3. vai, +, -

4. relāciju operācijas (<- меньше, >- vairāk,<=- меньше или равно, >=- lielāks vai vienāds ar,<>- nav vienāds, =- vienāds).

Turklāt darbību secību var mainīt ar iekavām. Piemēram, loģiskā izteiksmē mēs sakārtosim darbību secību:

AorBandnot (AorB)


Vispirms tiek veikta iekavās ietvertā darbība vai, pēc tam tiek veiktas not, un, vai darbības. Ja mainīgo A un B vietā aizstājam vērtības True un False, tad, izmantojot jau apspriesto procedūru, mēs iegūstam visas izteiksmes vērtību, kas vienāda ar True.

5. vingrinājums: . Ierakstiet piezīmju grāmatiņā un aprēķiniet izteicienu nozīmes

ar a=10, b=20, c=true, d=false: A)(a>5) un (b>5) un (a<20) and (b<30);

b) nē (a<15) or not (b<30);

c) c vai d un (b=20).

Uzmanību ! Paskālā nav iespējams ievadīt Būla datus, izmantojot lasīšanas operatoru. Tomēr ir iespējams izvadīt Būla tipa mainīgo vērtības, izmantojot rakstīšanas operatoru. Piemēram, pēc rakstīšanas (5>2) priekšraksta izpildes ekrānā tiks parādīts paziņojums True.

Mājas darba jautājumi un uzdevumi:

1. Kā tiek aprakstīts loģiskais mainīgais un kādas vērtības tam var būt?

2. Ko var iekļaut loģiskajās izteiksmēs. Sniedziet vienkāršu loģisku izteiksmju piemērus.

3. Pastāstiet par loģiskajām operācijām programmā Pascal. Sniedziet saliktu loģisko izteiksmju piemērus.

4. Kāda ir dažādu darbību prioritāte Paskālā. Sniedziet piemēru.


Uzdevumi:

№19.

A. vesels skaitlis k dalās ar 7;

B. Vismaz viens no veseliem skaitļiem x, y ir pāra;

G. x=max(x,y,z), tas ir, x ir lielākais no trim skaitļiem x,y,z;

D. (neizmantojiet darbību bez)

E. vismaz vienam no loģiskajiem mainīgajiem a un b ir vērtība True;

G. gan loģiskajiem mainīgajiem a, gan b ir vērtība True.

№20. Novērtējot izteiksmes, norādiet darbību secību:

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

№21. Novērtējiet šādas izteiksmes, ja a = True, b = False:

A) a vai b, nevis a; b)(a vai b), nevis a; V) nevis a un b; G) nē (a un b)

№22. Izveidojiet programmu: iestājeksāmenos pretendents kārtoja fiziku, datorzinātnes un eseju. Pretendents tiks uzņemts, ja viņš saņems 5 datorzinātnēs un iegūs vismaz 13 punktus par trim eksāmeniem.

§ 8. Problēmu risināšana par tēmu “Lineārās programmas. Loģiskās vērtības."

Piem. 7 . Aprēķiniet izteiksmes vērtības:

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

b) k mod 7 = k div5-1 pie k=15;

c) nepāra(trunc(10*p)) pie p=0,182;

d) nav nepāra(n), ja n=0;

e) t un (p mod 3=0) ar t=true, p=101010;

e) (x*y<>0) un (y>x), ja x=2, y=1;

g) (x*y<>0) vai (y>x), ja x=2, y=1;

h) a vai (nav b), ja a = nepatiess, b = patiess;

Piem. 8. Ierakstiet izteiksmi Paskālā, kas ir patiesa, ja ir izpildīts norādītais nosacījums, un false pretējā gadījumā:

a) x pieder segmentam ;

b) x atrodas ārpus segmenta;

c)* x pieder segmentam vai [-1, 1];

d)* x atrodas ārpus segmentiem un [-1, 1];

e) katrs no skaitļiem x, y, z ir pozitīvs;

g) neviens no skaitļiem x, y, z nav pozitīvs;

h) tikai viens no skaitļiem x, y, z ir pozitīvs;

i) loģiskajam mainīgajam a ir vērtība True, loģiskajam mainīgajam b ir vērtība False;


j)* gads ar kārtas numuru y ir garais gads (garais gads, ja tā skaitlis ir reizināts ar 4, bet no 100 reizinātājiem tikai 400 reizinātāji ir garie gadi, piemēram, 1700, 1800 un 1900 ir ne garie gadi, 2000. ir garais gads).

Piem. 9 . Uzzīmējiet plaknē (x, y) apgabalu, kurā un tikai kurā norādītā izteiksme ir patiesa:

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

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

c) (trunc(y)=0 un (round(x)=0);

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

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

Piem. 10 ..Grāmata maksā X rubļus. Pircēja rīcībā ir banknotes 50, 10, 5, 1 rubļa nominālvērtībā. Cik un kādi rēķini ir jāņem, lai samaksātu par grāmatu ar minimālo rēķinu skaitu?

Būla mainīgie parasti iegūst savas vērtības, veicot salīdzinājumus un matemātiskas darbības (par to tika runāts iepriekšējā nodarbībā), kā arī izmantojot īpašas Būla darbības.

Turbo Pascal ir loģiskas darbības, kas attiecas uz loģiskā tipa mainīgajiem. Šīs ir darbības nevis, un, vai un xor. Šajā tēmā apskatīsiet trīs loģiskās darbības. Šo darbību apzīmējumi un rezultāti ir norādīti tabulā. Apsveriet to.

Darbība (nav) ir viens operands un veido tā loģisko noliegumu. Operācijas not rezultāts ir False, ja operands ir patiess, un True, ja operands ir nepatiess. Tātad,

nav patiess, nepatiess (nepatiesība ir meli)

nav nepatiesa patiesība (ne meli nav patiesi)

Operācijas rezultāts un(un) ir patiess tikai tad, ja abi tā operandi ir patiesi, un nepatiesi visos citos gadījumos.

Operācijas rezultāts vai(vai) ir patiess, ja kāds no tā operandiem ir patiess, un false tikai tad, ja abi operandi ir nepatiesi.

Vingrinājums . Mēģiniet noteikt Būla operāciju nozīmi priekšrakstiem:

  1. Skolnieks ziemas brīvlaikā paliek mājās vai kaut kur dodas atvaļinājumā.
  2. Filips Kirkorovs ir dziedātājs un kombainists.
  3. Skolēni ir zēni un meitenes..

Loģiskās darbības, relāciju operācijas un aritmētiskās darbības bieži parādās vienā izteiksmē. Šajā gadījumā attiecības pa kreisi un pa labi no loģiskās darbības zīmes ir jāiekļauj iekavās, jo loģiskajām operācijām ir augstāka prioritāte. Kopumā tiek pieņemta šāda darbību prioritāte:

  • un, *, /, div, mod
  • vai, +, -
  • attiecību operācijas..

. Loģisko darbību sauc arī par loģisko reizināšanu, un loģisko darbību vai arī sauc par loģisko saskaitīšanu.

Turklāt darbību secību var mainīt ar iekavām. Piemēram, loģiskā izteiksmē mēs sakārtosim darbību secību

A vai B, nevis (A vai B)

Vispirms tiek veikta iekavās ietvertā darbība vai, pēc tam tiek veiktas not, un, vai darbības. Ja mainīgo A un B vietā aizstājam vērtības True un False, tad, izmantojot jau apspriesto procedūru, mēs iegūstam visas izteiksmes vērtību, kas vienāda ar True.

Vingrinājums . Pierakstiet savā piezīmju grāmatiņā un aprēķiniet izteiksmju vērtības a=10, b=20, c=true, d=false:

  • (a>5) un (b>5) un (a<20) and (b<30);
  • nē (a<15) or not (b<30);
  • c vai d un (b=20);

Uzmanību! Paskālā nav iespējams ievadīt Būla datus, izmantojot lasīšanas operatoru. Tomēr ir iespējams izvadīt Būla tipa mainīgo vērtības, izmantojot rakstīšanas operatoru.

Piemēram, pēc rakstīšanas (5>2) priekšraksta izpildes ekrānā tiks parādīts True.

Patstāvīgs darbs

Kopā ar savu skolotāju no tālāk norādītajiem uzdevumiem izvēlieties uzdevumu patstāvīgam darbam.

  1. Aprēķiniet izteiksmes vērtības:

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

    b) k mod 7 = k div5-1 pie k=15;

    c) nepāra(trunc(10*p)) pie p=0,182;

    d) nav nepāra(n), ja n=0;

    e) t un (p mod 3=0) ar t=true, p=101010;

    e) (x*y<>0) un (y>x), ja x=2, y=1;

    g) (x*y<>0) vai (y>x), ja x=2, y=1;

    h) a vai (nav b), ja a = nepatiess, b = patiess;

  2. Uzrakstiet Paskālā relāciju, kas ir patiesa, ja ir izpildīts norādītais nosacījums, un false pretējā gadījumā:

    a) vesels skaitlis k dalās ar 7;

    b) punkts (x, y) atrodas ārpus apļa ar rādiusu R un centrs atrodas punktā (1,0);

    c) naturālais skaitlis N ir naturālā skaitļa kvadrāts;

    d) 0

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

    e) vismaz vienam no loģiskajiem mainīgajiem a un b ir vērtība True;

    g) gan loģiskajiem mainīgajiem a, gan b ir vērtība True.

  3. Novērtējot izteiksmes, norādiet darbību secību:

    a) a un b vai ne c un d;

    b) (x>=0) vai ne c un d.

  4. Novērtējiet šādas izteiksmes, ja a = True, b = False:

    a) a vai b, nevis a;

    b) (a vai b), nevis a;

    c) nevis a un b;

    d) nav (a un b)

  5. Ierakstiet izteiksmi Paskālā, kas ir patiesa, ja ir izpildīts norādītais nosacījums, un false pretējā gadījumā:

    a) x pieder segmentam ;

    b) x atrodas ārpus segmenta;

    c)* x pieder segmentam vai [-1, 1];

    d)* x atrodas ārpus segmentiem un [-1, 1];

    e) katrs no skaitļiem x, y, z ir pozitīvs;

    g) neviens no skaitļiem x, y, z nav pozitīvs;

    h) tikai viens no skaitļiem x, y, z ir pozitīvs;

    i) loģiskajam mainīgajam a ir vērtība True, loģiskajam mainīgajam b ir vērtība False;

    j)* gads ar kārtas numuru y ir garais gads (garais gads, ja tā skaitlis ir reizināts ar 4, bet no 100 reizinātājiem tikai 400 daudzkārtņi ir garie gadi, piemēram, 1700, 1800 un 1900 ir ne garie gadi, 2000. ir garais gads).

  6. Uzzīmējiet plaknē (x, y) apgabalu, kurā un tikai kurā norādītā izteiksme ir patiesa:

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

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

    c) (trunc(y)=0 un (round(x)=0);

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

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

  7. Ir nosacīts operators:
    ja d<>10
    tad
    writeln ('urrā!')
    cits
    writeln('slikti...');

    Vai ir iespējams to aizstāt ar šādiem apgalvojumiem:

  8. Kādas būs mainīgo j, k vērtības pēc nosacījuma priekšraksta izpildes:
    ja j>k
    tad
    j:=k-2
    cits
    dec(k,2);
    ja mainīgo sākotnējās vērtības ir vienādas:
    a) j=3, k=5;
    b) j = 3, k = 3;
    c) j=3, k=2.

Piezīme . Dec (k,2) operatora izpildes rezultātā mainīgā k vērtība tiek samazināta par 2.