Loogilised väljendid.  Teema: Boole'i ​​andmetüüp

Loogilised väljendid. Teema: Boole'i ​​andmetüüp

. X kuulub segmenti ;
x asub väljaspool segmenti;
x kuulub segmenti või [-1,1];
x asub väljaspool lõiku või [-1,1].
3.
Selgitage tingimuslausete ülesehitust ja täitmise reegleid.
4.
Kirjutage määratud toiming ühe tingimuslausena:
cos
2
x, 0x juures =
1-patt
2
x, muidu.
5.
z
int z=0, x=1, y=

1;

80 Lineaarsete algoritmide programmeerimine süsteemis C++ Builder
kui (x>0), kui (y>0) z=1; muidu z = 2;
6.
Mis väärtus saab muutujal olema? z pärast operaatorite täitmist:
int z=0, x=

1, y = 1;
kui (x) (kui (y>0) z = 1;) muidu z = 2;
7.
Mis väärtus saab muutujal olema? z pärast operaatorite täitmist:
int z=0, x=0, y=1;
kui (x) (kui (y>0) z = 1;) muidu z = 2;
8.
Mis väärtus saab muutujal olema? z pärast operaatorite täitmist:
int z=0, x=3, y=1;
kui (x) (kui (y) z = 1;) muidu z = 2;
9.
Palun märkige vead järgmistes väidetes:
kui (1
muidu x=0; y+= 1;
10.
int z=0, x=0, y=1;
if (!x) ( if (!(y

1)) z=1;) muidu z=2;
11.
Mis väärtus on muutujal z pärast lausete täitmist:
int z=0, x=1, y=1;
if (!x) ( if (!(y

1)) z=1;) muidu z=2;
12.
Otsige programmi fragmendist vigu:
(int n,x; lüliti (k) ümbris + : x:=x-4 katkestus; juhtum

-

,

*

, x=5;
}
Milliseid reegleid rikuti ja kuidas vigu parandada?


81
3.4
3. jaotise individuaalsed ülesanded
Iga õpilane peab lahendama kaks esimese ja teise keerukuse astme ülesannet.
Esimese raskusastme probleemid.
1.
Teile antakse neljakohaline positiivne täisarv. Kirjutage programm, mis prindib tõsi või vale olenevalt sellest, kas määratud tingimus on täidetud või mitte: 1 ja 4 numbri summa võrdub 2 ja 3 numbri korrutisega.
2.
Antud reaalarvud x, y. Kui x ja y on negatiivsed, siis asenda iga väärtus selle mooduliga; kui ainult üks neist on negatiivne, suurendage mõlemat väärtust 5,5 võrra; muudel juhtudel vähendage mõlemat väärtust 10 korda.
3.
Antud reaalarvud x, y. Kui x ja y on positiivsed, siis vähendage iga väärtust 5 korda; kui mõlemad väärtused on vahemikus [-3, 9], siis asendage mõlemad väärtused 0-ga; muudel juhtudel suurendage x ja y 3 võrra.
4.
Antud reaalarvud x, y (xy). Asendage neist kahest arvust väiksem nende poolsummaga ja suurem nende topeltkorrutisega.
5.
Kui kolme paarikaupa erineva reaalarvu x, y, z summa on väiksem kui 1, siis asendage neist kolmest arvust väikseim ülejäänud kahe poolsummaga; vastasel juhul asenda x ja y väiksem ülejäänud kahe väärtuse poolsummaga.
6.
Antud reaalarvud a, b, c, d. Kui a b>c>d, siis jäta numbrid muutmata; vastasel juhul asenda kõik numbrid ruutudega.
7.
Tehke kindlaks, kas kuuekohaline täisarv on õnnelik. (Numbrit nimetatakse õnnelikuks, kui selle kolme esimese numbri summa on võrdne selle kolme viimase numbri summaga.)
8.
tõsi või vale sõltuvalt sellest, kas määratud tingimus on täidetud või mitte: suvaliste reaalarvude a, b, c korral määrake, kas võrrand ax
2
+bx+c=0 vähemalt üks reaalne lahendus.

82 Lineaarsete algoritmide programmeerimine süsteemis C++ Builder
9.
Järgmise probleemi lahendamiseks kirjutage programm, mis prindib tõsi või vale sõltuvalt sellest, kas määratud tingimus on täidetud või mitte: määrake, kas antud neljakohalise arvu kahe esimese numbri summa võrdub selle kahe viimase numbri summaga.
10.
Mõnes õppeasutuses kehtivad järgmised vastuvõtureeglid. Taotlejad sooritavad kaks eksamit, mille alusel hinnatakse
100 punkti igaüks. Kui taotleja kogub vähemalt 150 punkti, annab see õiguse registreeruda täistööajaga osakonda, 100–149 - õhtusesse osakonda; alla 100 punkti tähendab õppima asumisest keeldumist. Koostage programm, mis sõltuvalt kogutud punktide arvust teavitab taotlejat tema sisseastumisõigustest.
11.
Kirjutage valikoperaatori abil programm märkide sõnalise kirjelduse saamiseks. (1 – “halb”, 2 –
"mitterahuldav", 3 - "rahuldav", 4 - "hea", 5 -
"Suurepärane".)
12.
Järgmise probleemi lahendamiseks kirjutage programm, mis prindib tõsi või vale sõltuvalt sellest, kas määratud tingimus on täidetud või mitte: määrake, kas antud kolmekohalise arvu numbrite hulgas on identsed numbrid.
13.
Kirjutage programm, mis prindib tõsi, kui kuupäev d1, m1 eelneb (aasta jooksul) kuupäevale d2, m2 ja tähendus vale muidu.
14.
Koostage programm, kasutades valikuoperaatorit, mis kuvab nime esitähe põhjal ekraanil täisnime
(Ivan, Peeter, Nikolai, Vladimir, Georgi).
15.
Koostage valikoperaatori abil programm, mis sisestatud numbri põhjal on 0≤ k≤ 5 prindib selle numbri nime vene ja inglise keeles.
16.
Antud täisarv k (1

k

365). Määrake, kas aasta k-s päev on nädalavahetus või tööpäev, kui 1. jaanuar on esmaspäev.
17.
Antud reaalarv x. Arvutama f, Kui:











patt
,
1 0
,
0 5
2 11 2
juhtudel
ülejäänud
V
x
x
x
juures
x
x
x
juures
f

Programmeerimine ühemõõtmeliste massiividega
83 18.
Antud reaalarv x. Kirjutage programm arvutamiseks f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
juhtudel
ülejäänud
V
x
x
x
juures
x
x
x
juures
f
19.
Koostage valikoperaatori abil programm, mis linna nime esitähe põhjal kuvab linna täisnime (Kursk, Moskva, Tula, Novgorod, Voronež).
20.
Koostage programm valikuoperaatori abil, mis kuvab perekonnanime esitähe põhjal täieliku perekonnanime (Ivanov, Petrov, Sidorov, Mõškin, Šiškin).
21.
Ringi keskpunkti ja raadiuse koordinaadid on antud. Määrata, kas teatud punkt koordinaatidega (x,y) kuulub ringi.
22.
Koostage valikoperaatori abil programm, mis sisestatud loomanime esitähe põhjal prindib looma täisnime (koer, kass, kaelkirjak, hobune, ahv).
23.
Antud kolm erinevat numbrit a,b,c. Sorteeri need numbrid kasvavas järjekorras, nii et a vastas väikseimale arvule b- keskmine arv, c- Suurim.
24.
Koostage programm valikuoperaatori abil, mis kuvab nädalapäeva nime numbrite kaupa (1 kuni 7).
25.
Koostage programm valikuoperaatori abil, mis kuvab aasta kuu nime numbrite kaupa (1 kuni 12).
26.
Koostage valikoperaatori abil programm, mis prindib aastahooaja nimetuse sisestatud esitähe põhjal välja aastahooaja täisnime.
27.
Teile antakse viiekohaline positiivne täisarv. Kirjutage programm, mis prindib tõsi või vale olenevalt sellest, kas määratud tingimus on täidetud või mitte: 1, 3 ja 5 numbri summa on suurem kui 2 ja 4 numbri korrutis.
28.
Teile antakse neljakohaline positiivne täisarv. Kirjutage programm, mis prindib tõsi või vale oleneb

84 Lineaarsete algoritmide programmeerimine süsteemis C++ Builder kas määratud tingimus on täidetud või mitte: aritmeetiline keskmine 1 ja
4 numbrit on suuremad kui 2 ja 3 numbri summa.
29.
Antud numbriline ja kolmekohaline arv kümnendarvusüsteemis. Kui number ühtib arvu kõrgeima numbriga, siis arvutage numbri numbrite summa. Kui number langeb kokku numbri keskmise numbriga, arvutage arvu numbrite korrutis. Kui number ühtib arvu vähima tähendusega numbriga, arvutage arvu numbrite aritmeetiline keskmine. Kui ükski tingimus ei ole täidetud, arvutage arvu numbrite geomeetriline keskmine.
30.
Antud numbriline ja kolmekohaline arv kümnendarvusüsteemis. Kui number langeb kokku arvu kõrgeima numbriga, arvutage numbri numbrite aritmeetiline keskmine. Kui number langeb kokku numbri keskmise numbriga, siis arvutage arvu numbrite geomeetriline keskmine. Kui number ühtib arvu vähima tähendusega numbriga, siis arvutage numbri numbrite summa. Kui ükski tingimus ei ole täidetud, arvutage arvu numbrite korrutis
Teise raskusastme probleemid.
1.
Antud kahekohaline positiivne täisarv kolmendarvusüsteemis. Kirjutage programm, mis kuvab arvu numbrite nimed vene keeles, kui arvu kõrgeim number on suurem kui madalaim, vastasel juhul
- inglise keeles.
2.
Antakse täisarv kahekohaline positiivne arv viiekohalises arvusüsteemis. Kirjutage programm, mis kuvab inglise keeles numbrite numbrite nimesid, kui arvu kõrgeim number on väiksem kui suurem, vastasel juhul
- Vene keeles.
3.
Antakse täisarv kahekohaline positiivne arv viiekohalises arvusüsteemis. Kirjutage programm, mis kuvab inglise keeles numbrite numbrite nimesid, kui arvu kõrgeim number on täpselt 2 korda suurem kui väikseim, vastasel juhul
- Vene keeles.
4.
Antud kahekohaline positiivne täisarv kolmendarvusüsteemis. Kirjutage programm, mis kuvab numbrite numbrite nimed vene keeles, kui arvu kõrgeim number on väiksem kui väikseim, vastasel juhul
- inglise keeles.

Programmeerimine ühemõõtmeliste massiividega
85 5.
Antakse täisarv kahekohaline positiivne arv viiekohalises arvusüsteemis. Kirjutage programm, mis kuvab numbri numbrite nimed vene keeles.
6.
Antud täisarv kahekohaline positiivne arv kaheksandarvude süsteemis. Kirjutage programm, mis kuvab numbri numbrite nimed vene keeles.
7.
Antud täisarv kahekohaline positiivne arv kaheksandarvude süsteemis. Kirjutage programm, mis kuvab numbri numbrite nimed inglise keeles, kui põhinumber on alla poole väiksemast numbrist

Vene keeles.
8.
On antud täisarv kahekohaline positiivne arv vaheseinte arvusüsteemis. Koostage programm, mis kuvab numbrite kahanevas järjekorras numbrite nimed inglise keeles, muul juhul

Vene keeles.
9.
Kümnendarvusüsteemis antakse kaks numbrit. Koostage programm, mis kuvab nende numbrite summa numbrite nimed inglise keeles.
10.
Kümnendarvusüsteemis antakse kaks numbrit. Kirjutage programm, mis kuvab nende arvude korrutise numbrite nimed vene keeles.
11.
Kümnendarvusüsteemis antakse kaks numbrit. Koostage programm, mis kuvab nende numbrite vahe mooduli numbrite nimetuse vene keeles.
12.
Kümnendarvusüsteemis antakse kaks numbrit. Koostage programm, mis kuvab ingliskeelsete numbrite nimed nende arvude täisarvude jagatise ja jäägi jaoks.
13.
Antud kahekohaline positiivne täisarv üheksakohalises arvusüsteemis. Kirjutage programm, mis kuvab numbri ingliskeelsete numbrite nimed, kui kõrgeim number on kolm korda suurem kui madalaim number.

Vene keeles.
14.
Antud kahekohaline positiivne täisarv üheksakohalises arvusüsteemis. Koostage programm, mis kuvab inglise keeles suurema väärtusega numbri nime ja väiksema väärtusega numbri numbri nime.

Vene keeles.

86 Lineaarsete algoritmide programmeerimine süsteemis C++ Builder
15.
Antud kahekohaline positiivne täisarv vaheseinte arvusüsteemis. Koostage programm, mis kuvab inglise keeles suurema väärtusega numbri nime ja väiksema väärtusega numbri numbri nime.

Vene keeles.
16.
Antud kahekohaline positiivne täisarv kuueteistkümnendsüsteemis. Koostage programm, mis kuvab numbrite numbrite nimed inglise keeles.
17.
Antud kaks täisarvulist kahekohalist positiivset arvu kolmendarvusüsteemis. Kirjutage programm, mis kuvab nende arvude summa numbrite nimed vene keeles.
18.
Antud kaks täisarvulist kahekohalist positiivset arvu kahendarvusüsteemis. Koostage programm, mis kuvab nende arvude summa numbrite nimed inglise keeles.
19.
Antud kahekohaline positiivne täisarv viiekohalises arvusüsteemis. Koostage programm, mis kuvab numbrite kasvavas järjekorras numbrite ingliskeelsete numbrite nimed jm.

Vene keeles.
20.
Antud kahekohaline positiivne täisarv kuueteistkümnendsüsteemis. Kirjutage programm, mis kuvab numbri venekeelsete numbrite nimed, kui kõrgeim number on viis korda suurem kui madalaim number.

inglise keeles.
21.
Kahekohalises numbrisüsteemis on antud kaks numbrit. Koostage programm, mis kuvab nende numbrite vahe mooduli numbrite nimetused vene keeles.
22.
Kahekohalises numbrisüsteemis on antud kaks numbrit. Kirjutage programm, mis kuvab nende kahe numbri summa numbrite nimed vene keeles.
23.
Antud kahekohaline positiivne täisarv vaheseinte arvusüsteemis. Kirjutage programm, mis kuvab, kui kõrgeim number on kolm korda suurem kui madalaim number, siis numbri venekeelsed nimed, vastasel juhul

inglise keeles.
24.
Antud kahekohaline positiivne täisarv kaheksandarvusüsteemis. Kirjutage programm, mis kuvab suurema väärtusega numbri nime vene keeles ja keeles

Programmeerimine ühemõõtmeliste massiividega
87 on väikseima väärtusega numbri numbri järjestus,

inglise keeles.
25.
Antud kahekohaline positiivne täisarv vaheseinte arvusüsteemis. Kirjutage programm, mis kuvab vene keeles väiksema kui 4 väärtusega numbri numbrite nime ja numbri, mille väärtus on 4 või suurem, numbrite nime,

inglise keeles.
26.
Antud kahekohaline positiivne täisarv kuueteistkümnendsüsteemis. Kirjutage programm, mis kuvab vene keeles alla 3 väärtusega numbri numbrite nime ja 3-st suurema või sellega võrdse numbri numbrite nimetuse,

inglise keeles.
27.
Antud on aasta kuu nime kaks esimest tähte (suur- ja suurtähtede tundetu). Kirjutage programm, mis kuvab aasta kuu täisnime vene keeles.
28.
Toodud on nädalapäeva nime kaks esimest tähte (suur- ja suurtähtede tundetu). Kirjutage programm, mis kuvab nädalapäeva täisnime vene keeles.
29.
Vana Jaapani kalender võttis kasutusele 60-aastase tsükli, mis koosneb viiest 12-aastasest alamtsüklist. Alamtsüklid määrati värvinimede järgi: roheline, punane, kollane, valge ja must. Igas alamtsüklis nimetati aastad loomade järgi: rott, lehm, tiiger, jänes, draakon, madu, hobune, lammas, ahv, kana, koer ja siga (1984 – rohelise roti aasta – oli järgmise aasta algus). tsükkel). Koostage programm, mis sisestab teatud aasta AD numbri ja prindib selle nime vana jaapani kalendri järgi.
30.
Antud kahekohaline positiivne täisarv üheksakohalises arvusüsteemis. Kirjutage programm, mis kuvab vene keeles numbri, mille väärtus on suurem kui 5, numbrite nime ja numbrite nime, mille väärtus on väiksem või võrdne 5,

inglise keeles.

88 Lineaarsete algoritmide programmeerimine süsteemis C++ Builder
4 PROGRAMMEERIMISTÜKLIK
ALGORITMID C++BUILDER SÜSTEEMIS
Selles jaotises uuritakse keeletsüklite operaatoreid
C++, tsükliliste algoritmide programmeerimise oskuste omandamine, sissejuhatus
jah, programmide koostamine ja silumine.
4.1
Põhimõisted
Keele peal C++ Builder Seal on kolm silmuseoperaatorit:
1.
Silmus eeltingimusega ( samas);
2.
Silmus järeltingimustega ( teha);
3.
Silmus loenduriga ( jaoks).
Silmusoperaator eeltingimusega samas (Joonis 4.1):
samas(seisukord) (silmuskeha)
Joonis 4.1

Silmusoperaatori algoritmi diagramm samas
Kui tingimuse arvutamise tulemus on tõsi(tõene), siis käivitatakse tsükli keha ja üleminek tingimuse kontrollimisele viiakse uuesti läbi. Kui tingimuse arvutamise tulemus on vale(false), siis tsükkel väljub ja liigub tsüklilisele operaatorile järgnevasse lausesse samas.
Kui enne tsükli esimest täitmist oli avaldise väärtus vale, tsükli keha ei täideta üldse ja toimub üleminek järgmisele lausele.
Seisund
Silmuskorpus
Jah
Ei

Programmeerimine ühemõõtmeliste massiividega
89
Näide:
Arvutage paaritute arvude summa vahemikus 1 kuni 10.
( int k=1, s=0; while (k ( s+=k; k+=2;
}
}
Järelseisundiga silmusoperaator teha (Joonis 4.2):
teha(silmuskeha) samas(seisukord); jah pole tingimust
Silmuskorpus
Joonis 4.2

Silmusoperaatori algoritmi diagramm teha...samal ajal
Tingimus on loogilist tüüpi avaldis, tsükli keha on üks liht- või liitlause.
Avaldussilmuse keha

Valige koos õpetajaga allolevate harjutuste hulgast ülesanne iseseisvaks tööks.

1. Arvutage avaldise väärtused:

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

b) k mod 7 = k div5-1, kui k = 15;

c) paaritu(trunc(10*p)) p=0,182 juures;

d) mitte paaritu(n), kui n=0;

e) t ja (p mod 3 = 0), kus t = tõene, p = 101010;

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

g) (x*y<>0) või (y>x), kui x = 2, y = 1;

h) a või (mitte b), kui a = Väär, b = Tõene;

2. Kirjutage Pascalis seos, mis on tõene, kui määratud tingimus on täidetud, ja väär, muul juhul:

a) täisarv k jagub 7-ga;

b) võrrandil pole reaalseid juuri;

c) punkt (x, y) asub väljaspool raadiusega R ringi, mille keskpunkt on punktis (1,0);

d) naturaalarv N on naturaalarvu ruut;

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

ja) (ärge kasutage mitte-toimingut)g

h) vähemalt üks loogilistest muutujatest a ja b omab väärtust Tõene;

i) nii loogiliste muutujate a kui ka b väärtus on Tõene.

3. Avaldiste arvutamisel märkige toimingute järjekord:

a) a ja b või mitte c ja d;

b) (x>=0) või mitte c ja d.

4. Arvutage a=True, b=False jaoks järgmised avaldised:

a) a või b ja mitte a;

b) (a või b), mitte a;

c) mitte a ja b;

d) mitte (a ja b)

5. Kirjutage Pascalis avaldis, mis on tõene, kui määratud tingimus on täidetud, ja väär, muul juhul:

a) x kuulub segmenti ;

b) x asub väljaspool lõiku;

c)* x kuulub segmenti või [-1, 1];

d)* x asub väljaspool segmente ja [-1, 1];

e) iga arv x, y, z on positiivne;

g) ükski arv x, y, z ei ole positiivne;

h) ainult üks arvudest x, y, z on positiivne;

i) loogilise muutuja a väärtus on Tõene, loogilise muutuja b väärtus Väär;

j)* aasta järjekorranumbriga y on liigaasta (liigaaasta, kui selle arv on 4-kordne, kuid 100 kordajatest on liigaastad vaid 400-kordsed, näiteks 1700, 1800 ja 1900 on liigaasta mitteliigaastad, 2000 on liigaasta).

6. Joonistage tasapinnale (x, y) ala, kus ja ainult milles näidatud avaldis on tõene:

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

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

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

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

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

7) Seal on tingimuslik operaator:

writeln ('hurraa!')

kirjutatud ('halb...')

Kas seda on võimalik asendada järgmiste väidetega:

a) kui d=10 b) kui ei (d=10)

writeln (’hurraa!’) writeln (’hurraa!’)

writeln('halb...'); writeln('halb...');

c) kui ei (d=10) d) kui ei (d<>10)

writeln ('halb...') writeln ('halb...')

writeln('hurraa!'); writeln('hurraa!');

8) Millised on muutujate j, k väärtused pärast tingimuslause täitmist:

kui muutujate algväärtused on võrdsed:

Märge. Dec (k,2) operaatori täitmise tulemusena vähendatakse muutuja k väärtust 2 võrra.

Boole'i ​​tüüpi muutujaid kirjeldatakse identifikaatori abil Boolean . Neil võib olla ainult kaks tähendust - Vale (valetada) Ja Tõsi (tõsi). Neid kirjeldatakse ka muutujate kirjelduse jaotises. Var<имя>: Boolean;

Loogilised avaldised võivad sisaldada:

n loogilisi väärtusi,

n seoseoperatsioonid (<- меньше, >- rohkem,<=- меньше или равно, >=- suurem või võrdne,<>- mitte võrdne, =- võrdne).

n loogilisi tehteid And, Or, Not

n dets. toimingud ja funktsioonid


Turbo Pascalil on loogilised toimingud, mis kehtivad loogilist tüüpi muutujatele. Need on toimingud mitte, ja, või ja xor.

Operatsioon mitte(mitte) omab ühte operandit ja moodustab selle loogilise eituse. Tehte mitte tulemus on Väär, kui operandi väärtus on tõene, ja tõene, kui operandi väärtus on väär. Niisiis, mitte Tõene Vale (ebatõde on vale) mitte Vale Tõsi (mitte vale pole tõde).

Operatsiooni tulemus ja(ja) on tõene ainult siis, kui selle mõlemad operandid on tõesed, ja väär kõigil muudel juhtudel (loogiline korrutamine).

Operatsiooni tulemus või(või) on tõene, kui üks selle operandidest on tõene, ja väär ainult siis, kui mõlemad operandid on väärad (loogiline liitmine).

Loogikatehted, relatsioonitehted ja aritmeetilised operatsioonid esinevad sageli samas avaldises. Sel juhul tuleb sulgudesse panna loogikatehe märgist vasakul ja paremal olevad seosed, kuna loogikatehetel on kõrgem prioriteet. Üldiselt aktsepteeritakse järgmisi toimingute prioriteete:

2. ja, *, /, div, mod

3. või, +, -

4. seosoperatsioonid (<- меньше, >- rohkem,<=- меньше или равно, >=- suurem või võrdne,<>- mitte võrdne, =- võrdne).

Lisaks saab sulgudes muuta toimingute järjekorda. Näiteks loogilises avaldises korraldame toimingute järjekorra:

AorBandnot (AorB)


Esmalt sooritatakse sulgudes olev operatsioon või, millele järgnevad toimingud not ja, või. Kui asendame muutujate A ja B asemel väärtused Tõene ja Väär, siis saame juba käsitletud protseduuri abil kogu avaldise väärtuse, mis on võrdne tõega.

5. harjutus: . Kirjutage vihikusse ja arvutage välja väljendite tähendused

a = 10, b = 20, c = tõene, d = väär: A)(a>5) ja (b>5) ja (a<20) and (b<30);

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

c) c või d ja (b=20).

Tähelepanu ! Pascalis ei saa lugemisoperaatori abil Boole'i ​​andmeid sisestada. Siiski on võimalik kirjutusoperaatori abil väljastada Boole'i ​​tüüpi muutujate väärtused. Näiteks, pärast kirjutamiskäsu (5>2) täitmist kuvatakse ekraanil Tõene.

Kodutöö küsimused ja ülesanded:

1. Kuidas kirjeldatakse loogilist muutujat ja milliseid väärtusi see võib võtta?

2. Mida saab loogilistesse avaldistesse kaasata. Too näiteid lihtsate loogiliste väljendite kohta.

3. Rääkige meile Pascali loogilistest operatsioonidest. Too näiteid loogiliste liitavaldiste kohta.

4. Mis on Pascalis erinevate toimingute prioriteet. Too näide.


Ülesanded:

№19.

A. täisarv k jagub 7-ga;

B. Vähemalt üks täisarvudest x, y on paaris;

G. x=max(x,y,z), see tähendab, et x on suurim kolmest arvust x,y,z;

D. (ärge kasutage mitte-toimingut)

E. vähemalt ühe loogilise muutuja a ja b väärtus on True;

G. mõlemad loogilised muutujad a ja b omavad väärtust Tõene.

№20. Määrake avaldiste hindamisel toimingute järjekord:

A) a ja b või mitte c ja d; b) (x>=0) või mitte c ja d.

№21. Hinnake järgmisi avaldisi, kui a=True, b=False:

A) a või b ja mitte a; b)(a või b), mitte a; V) mitte a ja b; G) mitte (a ja b)

№22. Programmi koostamine: Sisseastumiseksamitel sooritas taotleja füüsika, informaatika ja essee. Taotleja võetakse vastu, kui ta saab arvutiteaduses hinde 5 ja kogub kolme eksami eest vähemalt 13 punkti.

§ 8. Ülesannete lahendamine teemal „Lineaarprogrammid. Loogilised väärtused."

Nt 7 . Arvutage avaldise väärtused:

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

b) k mod 7 = k div5-1, kui k = 15;

c) paaritu(trunc(10*p)) p=0,182 juures;

d) mitte paaritu(n), kui n=0;

e) t ja (p mod 3 = 0), kus t = tõene, p = 101010;

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

g) (x*y<>0) või (y>x), kui x = 2, y = 1;

h) a või (mitte b), kui a = Väär, b = Tõene;

Nt 8. Kirjutage Pascalis avaldis, mis on tõene, kui määratud tingimus on täidetud, ja väär muul juhul:

a) x kuulub segmenti ;

b) x asub väljaspool lõiku;

c)* x kuulub segmenti või [-1, 1];

d)* x asub väljaspool segmente ja [-1, 1];

e) iga arv x, y, z on positiivne;

g) ükski arv x, y, z ei ole positiivne;

h) ainult üks arvudest x, y, z on positiivne;

i) loogilise muutuja a väärtus on Tõene, loogilise muutuja b väärtus Väär;


j)* aasta järjekorranumbriga y on liigaasta (liigaaasta, kui selle arv on 4-kordne, kuid 100 kordajatest on liigaastad vaid 400-kordsed, näiteks 1700, 1800 ja 1900 on liigaasta mitteliigaastad, 2000 on liigaasta).

Nt 9 . Joonistage tasapinnale (x, y) piirkond, kus ja ainult kus näidatud avaldis on tõene:

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

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

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

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

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

Nt 10 ..Raamat maksab X rubla. Ostjal on pangatähed nimiväärtusega 50, 10, 5, 1 rubla. Kui palju ja milliseid arveid tuleb võtta, et minimaalse arvete arvuga raamatu eest maksta?

Boole'i ​​muutujad saavad tavaliselt oma väärtused võrdluste ja matemaatiliste toimingute tegemisel (seda käsitleti eelmises õppetükis), samuti kasutades konkreetseid Boole'i ​​toiminguid.

Turbo Pascalil on loogilised toimingud, mis kehtivad loogilist tüüpi muutujatele. Need on toimingud mitte, ja, või ja xor. Selles teemas vaatlete kolme loogilist toimingut. Nende toimingute tähistused ja tulemused on toodud tabelis. Kaaluge seda.

Operatsioon mitte(mitte) omab ühte operandit ja moodustab selle loogilise eituse. Tehte mitte tulemus on Väär, kui operandi väärtus on tõene, ja tõene, kui operandi väärtus on väär. Niisiis,

ei ole tõsi, vale (ebatõde on vale)

ei ole vale Tõsi (vale pole tõsi)

Operatsiooni tulemus ja(ja) on tõene ainult siis, kui mõlemad selle operandid on tõesed, ja väär kõigil muudel juhtudel.

Operatsiooni tulemus või(või) on tõene, kui üks selle operandidest on tõene, ja väär ainult siis, kui mõlemad operandid on väärad.

Harjutus . Proovige määrata Boole'i ​​operatsioonide tähendus lausete jaoks:

  1. Koolilaps jääb talvevaheajal koju või läheb kuhugi puhkama.
  2. Philip Kirkorov on laulja ja kombaini operaator.
  3. Koolilapsed on poisid ja tüdrukud..

Loogikatehted, relatsioonitehted ja aritmeetilised operatsioonid esinevad sageli samas avaldises. Sel juhul tuleb sulgudesse panna loogikatehe märgist vasakul ja paremal olevad seosed, kuna loogikatehetel on suurem prioriteet. Üldiselt aktsepteeritakse järgmisi toimingute prioriteete:

  • ja, *, /, div, mod
  • või +, -
  • suhteoperatsioonid..

. Loogilist operatsiooni nimetatakse ka loogiliseks korrutamiseks ja loogilist operatsiooni või nimetatakse ka loogiliseks liitmiseks.

Lisaks saab sulgudes muuta toimingute järjekorda. Näiteks loogilises avaldises korraldame toimingute järjekorra

A või B ja mitte (A või B)

Esmalt sooritatakse sulgudes olev operatsioon või, millele järgnevad toimingud not ja, või. Kui asendame muutujate A ja B asemel väärtused Tõene ja Väär, siis saame juba käsitletud protseduuri abil kogu avaldise väärtuse, mis on võrdne tõega.

Harjutus . Kirjutage oma märkmikusse ja arvutage a = 10, b = 20, c = tõene, d = väär avaldiste väärtused:

  • (a>5) ja (b>5) ja (a<20) and (b<30);
  • mitte (a<15) or not (b<30);
  • c või d ja (b=20);

Tähelepanu! Pascalis ei saa lugemisoperaatori abil Boole'i ​​andmeid sisestada. Siiski on võimalik väljastada Boole'i ​​tüüpi muutujate väärtused kirjutamisoperaatori abil.

Näiteks pärast kirjutamiskäsu (5>2) täitmist kuvatakse ekraanil True.

Iseseisev töö

Valige koos õpetajaga allolevate harjutuste hulgast ülesanne iseseisvaks tööks.

  1. Arvutage avaldise väärtused:

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

    b) k mod 7 = k div5-1, kui k = 15;

    c) paaritu(trunc(10*p)) p=0,182 juures;

    d) mitte paaritu(n), kui n=0;

    e) t ja (p mod 3 = 0), kus t = tõene, p = 101010;

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

    g) (x*y<>0) või (y>x), kui x = 2, y = 1;

    h) a või (mitte b), kui a = Väär, b = Tõene;

  2. Kirjutage Pascalis seos, mis on tõene, kui määratud tingimus on täidetud, ja väär muul juhul:

    a) täisarv k jagub 7-ga;

    b) punkt (x, y) asub väljaspool raadiusega R ringi, mille keskpunkt on punktis (1,0);

    c) naturaalarv N on naturaalarvu ruut;

    d) 0

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

    e) vähemalt üks loogilistest muutujatest a ja b omab väärtust Tõene;

    g) mõlema loogilise muutuja a ja b väärtus on Tõene.

  3. Määrake avaldiste hindamisel toimingute järjekord:

    a) a ja b või mitte c ja d;

    b) (x>=0) või mitte c ja d.

  4. Hinnake järgmisi avaldisi, kui a=True, b=False:

    a) a või b ja mitte a;

    b) (a või b), mitte a;

    c) mitte a ja b;

    d) mitte (a ja b)

  5. Kirjutage Pascalis avaldis, mis on tõene, kui määratud tingimus on täidetud, ja väär muul juhul:

    a) x kuulub segmenti ;

    b) x asub väljaspool lõiku;

    c)* x kuulub segmenti või [-1, 1];

    d)* x asub väljaspool segmente ja [-1, 1];

    e) iga arv x, y, z on positiivne;

    g) ükski arv x, y, z ei ole positiivne;

    h) ainult üks arvudest x, y, z on positiivne;

    i) loogilise muutuja a väärtus on Tõene, loogilise muutuja b väärtus Väär;

    j)* aasta järjekorranumbriga y on liigaasta (liigaaasta, kui selle arv on 4-kordne, kuid 100-kordsetest on liigaastad vaid 400-kordsed, näiteks 1700, 1800 ja 1900 on mitteliigaaastad, 2000 on liigaasta).

  6. Joonistage tasapinnale (x, y) piirkond, kus ja ainult kus näidatud avaldis on tõene:

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

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

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

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

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

  7. Seal on tingimuslik operaator:
    kui d<>10
    siis
    writeln ('hurraa!')
    muidu
    writeln('halb...');

    Kas seda on võimalik asendada järgmiste väidetega:

  8. Millised on muutujate j, k väärtused pärast tingimuslause täitmist:
    kui j>k
    siis
    j:=k-2
    muidu
    dets(k,2);
    kui muutujate algväärtused on võrdsed:
    a) j = 3, k = 5;
    b) j = 3, k = 3;
    c) j = 3, k = 2.

Märge . Dec (k,2) operaatori täitmise tulemusena vähendatakse muutuja k väärtust 2 võrra.