Logiske uttrykk.  Emne: Boolsk datatype

Logiske uttrykk. Emne: Boolsk datatype

. X tilhører segmentet ;
x ligger utenfor segmentet;
x tilhører segmentet eller [-1,1];
x ligger utenfor segmentet eller [-1,1].
3.
Forklar strukturen og reglene for å utføre betingede utsagn.
4.
Skriv den angitte handlingen som en enkelt betinget setning:
cos
2
x, ved 0x =
1-synd
2
x, ellers.
5.
z
int z=0, x=1, y=

1;

80 Programmering av lineære algoritmer i systemet C++ Builder
hvis (x>0) hvis (y>0) z=1; ellers z=2;
6.
Hvilken verdi vil variabelen ha? z etter å ha utført operatørene:
int z=0, x=

1, y=1;
hvis (x) (hvis (y>0) z=1;) ellers z=2;
7.
Hvilken verdi vil variabelen ha? z etter å ha utført operatørene:
int z=0, x=0, y=1;
hvis (x) (hvis (y>0) z=1;) ellers z=2;
8.
Hvilken verdi vil variabelen ha? z etter å ha utført operatørene:
int z=0, x=3, y=1;
hvis (x) (hvis (y) z=1;) ellers z=2;
9.
Vennligst angi feil i følgende utsagn:
hvis (1
ellers x=0; y+= 1;
10.
int z=0, x=0, y=1;
hvis (!x) ( hvis (!(y

1)) z=1;) ellers z=2;
11.
Hvilken verdi vil variabelen z ha etter å ha utført setningene:
int z=0, x=1, y=1;
hvis (!x) ( hvis (!(y

1)) z=1;) ellers z=2;
12.
Finn feil i programfragmentet:
(int n,x; bryter (k) case + : x:=x-4 break; case

-

,

*

, x=5;
}
Hvilke regler ble brutt og hvordan kan feilene rettes?


81
3.4
Individuelle oppgaver for seksjon 3
Hver elev må løse to problemer på første og andre nivå av kompleksitet.
Problemer på første vanskelighetsgrad.
1.
Du får et firesifret positivt heltall. Skriv et program som skriver ut ekte eller falsk avhengig av om den angitte betingelsen er oppfylt eller ikke: summen av 1 og 4 sifre er lik produktet av 2 og 3 sifre.
2.
Gitt reelle tall x, y. Hvis x og y er negative, erstatt hver verdi med sin modul; hvis bare en av dem er negativ, øk begge verdiene med 5,5; i andre tilfeller, reduser begge verdiene med 10 ganger.
3.
Gitt reelle tall x, y. Hvis x og y er positive, reduser hver verdi med 5 ganger; hvis begge verdiene er i området [-3, 9], erstatt begge verdiene med 0; i andre tilfeller øker du x og y med 3.
4.
Gitt reelle tall x, y (xy). Erstatt det minste av disse to tallene med deres halvsum, og det største med deres doble produkt.
5.
Hvis summen av tre parvis distinkte reelle tall x, y, z er mindre enn 1, erstatt det minste av disse tre tallene med halvsummen av de to andre; Ellers erstatt den minste av x og y med halvsummen av de to gjenværende verdiene.
6.
Gitt reelle tall a, b, c, d. Hvis en b>c>d, la så tallene være uendret; Ellers erstatt alle tall med firkanter.
7.
Finn ut om et sekssifret heltall er heldig. (Et tall kalles heldig hvis summen av de tre første sifrene er lik summen av de tre siste sifrene.)
8.
ekte eller falsk avhengig av om den spesifiserte betingelsen er oppfylt eller ikke: for vilkårlige reelle tall a, b, c, avgjør om ligningsaksen
2
+bx+c=0 minst én reell løsning.

82 Programmering av lineære algoritmer i systemet C++ Builder
9.
For å løse følgende problem, skriv et program som skriver ut ekte eller falsk avhengig av om den angitte betingelsen er oppfylt eller ikke: Bestem om summen av de to første sifrene i et gitt firesifret tall er lik summen av de to siste tallene.
10.
Noen utdanningsinstitusjoner har følgende opptaksregler. Søkere tar to eksamener, som vurderes iht
100 poeng hver. Hvis en søker scorer minst 150 poeng, gir dette rett til å melde seg på heltidsavdelingen, fra 100 til 149 - på kveldsavdelingen; under 100 poeng betyr avslag på studieopptak. Skriv et program som, avhengig av antall poeng, informerer søkeren om hans rettigheter til opptak.
11.
Skriv et program ved å bruke utvalgsoperatoren for å få en verbal beskrivelse av karakterene. (1 – “dårlig”, 2 –
"utilfredsstillende", 3 - "tilfredsstillende", 4 - "bra", 5 -
"Flott".)
12.
For å løse følgende problem, skriv et program som skriver ut ekte eller falsk avhengig av om den angitte betingelsen er oppfylt eller ikke: avgjør om blant sifrene til et gitt tresifret nummer er det identiske.
13.
Skriv et program som skriver ut ekte, hvis dato d1, m1 går før (innen et år) datoen d2, m2 og mening falsk ellers.
14.
Skriv et program ved å bruke en valgoperator som, basert på den første bokstaven i navnet, viser hele navnet på skjermen
(Ivan, Peter, Nikolai, Vladimir, Georgy).
15.
Skriv et program ved å bruke valgoperatoren, som, basert på det angitte sifferet, 0≤ k≤ 5 skriver ut navnet på dette nummeret på russisk og engelsk.
16.
Gitt et heltall k (1

k

365). Bestem om den k. dagen i året skal være en helg eller en arbeidsdag, hvis 1. januar er mandag.
17.
Gitt et reelt tall x. Regne ut f, hvis:











synd
,
1 0
,
0 5
2 11 2
saker
resten
V
x
x
x

x
x
x

f

Programmering med endimensjonale arrays
83 18.
Gitt et reelt tall x. Skriv et program for å beregne f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
saker
resten
V
x
x
x

x
x
x

f
19.
Skriv et program ved å bruke en utvalgsoperatør som, basert på den første bokstaven i bynavnet, viser byens fulle navn (Kursk, Moskva, Tula, Novgorod, Voronezh).
20.
Skriv et program ved å bruke en utvalgsoperatør som, basert på den første bokstaven i etternavnet, viser hele etternavnet (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Koordinatene til sentrum og radiusen til sirkelen er gitt. Bestem om et bestemt punkt med koordinater (x,y) tilhører en sirkel.
22.
Skriv et program ved å bruke en utvalgsoperator som, basert på den første bokstaven i dyrenavnet som er skrevet inn, vil skrive ut hele navnet på dyret (hund, katt, sjiraff, hest, ape).
23.
Gitt tre forskjellige tall a,b,c. Sorter disse tallene i stigende rekkefølge slik at en tilsvarte det minste antallet b- gjennomsnittlig antall, c– den største.
24.
Skriv et program ved å bruke en valgoperator som viser navnet på ukedagen etter nummer (fra 1 til 7).
25.
Skriv et program ved å bruke en valgoperator som viser navnet på måneden i året etter tall (fra 1 til 12).
26.
Skriv et program med valgoperatøren, som, basert på den inntastede første bokstaven i navnet på årets sesong, skriver ut hele navnet på årets sesong.
27.
Du får et femsifret positivt heltall. Skriv et program som skriver ut ekte eller falsk avhengig av om den angitte betingelsen er oppfylt eller ikke: summen av 1, 3 og 5 sifre er større enn produktet av 2 og 4 sifre.
28.
Du får et firesifret positivt heltall. Skriv et program som skriver ut ekte eller falsk avhengig av

84 Programmering av lineære algoritmer i systemet C++ Builder om den angitte betingelsen er oppfylt eller ikke: aritmetisk gjennomsnitt 1 og
4 sifre er større enn summen av 2 og 3 sifre.
29.
Gitt et siffer og et tresifret tall i desimaltallsystemet. Hvis sifferet samsvarer med det høyeste sifferet i tallet, beregner du summen av sifrene i tallet. Hvis sifferet sammenfaller med det midterste sifferet i tallet, beregner du produktet av sifrene i tallet. Hvis sifferet faller sammen med det minst signifikante sifferet i tallet, beregner du det aritmetiske gjennomsnittet av sifrene i tallet. Hvis ingen av betingelsene er oppfylt, beregner du det geometriske gjennomsnittet av sifrene i tallet.
30.
Gitt et siffer og et tresifret tall i desimaltallsystemet. Hvis sifferet faller sammen med det høyeste sifferet i tallet, beregner du det aritmetiske gjennomsnittet av sifrene i tallet. Hvis sifferet sammenfaller med det midterste sifferet i tallet, beregner du det geometriske gjennomsnittet av sifrene i tallet. Hvis sifferet sammenfaller med det minst signifikante sifferet i tallet, regner du ut summen av sifrene i tallet. Hvis ingen av betingelsene er oppfylt, beregner du produktet av sifrene i tallet
Problemer på andre vanskelighetsgrad.
1.
Gitt et tosifret positivt heltall i det ternære tallsystemet. Skriv et program som viser navnene på sifrene til et tall på russisk hvis det høyeste sifferet i tallet er større enn det laveste, ellers
- på engelsk.
2.
Et heltall tosifret positivt tall i det femsifrede tallsystemet er gitt. Skriv et program som viser navnene på sifrene til et nummer på engelsk hvis det høyeste sifferet i nummeret er større enn det laveste, ellers
- på russisk.
3.
Et heltall tosifret positivt tall i det femsifrede tallsystemet er gitt. Skriv et program som viser navnene på sifrene til et tall på engelsk hvis det høyeste sifferet i tallet er nøyaktig 2 ganger større enn det laveste, ellers
- på russisk.
4.
Gitt et tosifret positivt heltall i det ternære tallsystemet. Skriv et program som viser navnene på sifrene til et tall på russisk hvis det høyeste sifferet i tallet er mindre enn det laveste, ellers
- på engelsk.

Programmering med endimensjonale arrays
85 5.
Et heltall tosifret positivt tall i det femsifrede tallsystemet er gitt. Skriv et program som viser navnene på sifrene til et tall på russisk.
6.
Gitt et heltall tosifret positivt tall i det oktale tallsystemet. Skriv et program som viser navnene på sifrene til et tall på russisk.
7.
Gitt et heltall tosifret positivt tall i det oktale tallsystemet. Skriv et program som viser, hvis hovedsifferet er mindre enn halvparten av undersifferet, navnene på sifrene i nummeret på engelsk, ellers

på russisk.
8.
Et heltalls tosifret positivt tall i septaltallsystemet er gitt. Skriv et program som viser, hvis tallene er i synkende rekkefølge, navnene på sifrene i nummeret på engelsk, ellers

på russisk.
9.
To sifre er gitt i desimaltallsystemet. Skriv et program som viser navnene på engelsk av sifrene i summen av disse sifrene.
10.
To sifre er gitt i desimaltallsystemet. Skriv et program som viser navnene på russisk av tallene til produktet av disse tallene.
11.
To sifre er gitt i desimaltallsystemet. Skriv et program som viser navnet på sifrene i modulen til forskjellen mellom disse sifrene på russisk.
12.
To sifre er gitt i desimaltallsystemet. Skriv et program som viser navnene på sifrene på engelsk for kvotienten og resten av en heltallsdivisjon av disse tallene.
13.
Gitt et tosifret positivt heltall i det nisifrede tallsystemet. Skriv et program som viser, hvis det høyeste sifferet er tre ganger større enn det laveste sifferet, navnene på sifrene i nummeret på engelsk, ellers

på russisk.
14.
Gitt et tosifret positivt heltall i det nisifrede tallsystemet. Skriv et program som viser navnet på sifferet til et tall som har en større verdi på engelsk, og navnet på sifferet til et tall som har en mindre verdi.

på russisk.

86 Programmering av lineære algoritmer i systemet C++ Builder
15.
Gitt et tosifret positivt heltall i septaltallsystemet. Skriv et program som viser navnet på sifferet til et tall som har en større verdi på engelsk, og navnet på sifferet til et tall som har en mindre verdi.

på russisk.
16.
Gitt et tosifret positivt heltall i det heksadesimale tallsystemet. Skriv et program som viser navnene på sifrene til et nummer på engelsk.
17.
Gitt to heltalls tosifrede positive tall i det ternære tallsystemet. Skriv et program som viser navnene på sifrene i summen av disse tallene på russisk.
18.
Gitt to heltalls tosifrede positive tall i det binære tallsystemet. Skriv et program som viser navnene på sifrene i summen av disse tallene på engelsk.
19.
Gitt et tosifret positivt heltall i det femsifrede tallsystemet. Skriv et program som viser, hvis tallene er ordnet i stigende rekkefølge, navnene på sifrene i nummeret på engelsk, og ellers

på russisk.
20.
Gitt et tosifret positivt heltall i det heksadesimale tallsystemet. Skriv et program som viser, hvis det høyeste sifferet er fem ganger større enn det laveste sifferet, navnene på sifrene i nummeret på russisk, ellers

på engelsk.
21.
To sifre er gitt i det oktale tallsystemet. Skriv et program som viser navnene på russisk av sifrene i modulen til forskjellen mellom disse sifrene.
22.
To sifre er gitt i det oktale tallsystemet. Skriv et program som viser navnene på russisk av sifrene i summen av disse to sifrene.
23.
Gitt et tosifret positivt heltall i septaltallsystemet. Skriv et program som viser, hvis det høyeste sifferet er tre ganger større enn det laveste sifferet, navnene på sifrene i nummeret på russisk, ellers

på engelsk.
24.
Gitt et tosifret positivt heltall i det oktale tallsystemet. Skriv et program som viser navnet på sifferet til et tall som har en større verdi på russisk, og på

Programmering med endimensjonale arrays
87 er rangeringen av sifferet til tallet som har den laveste verdien,

på engelsk.
25.
Gitt et tosifret positivt heltall i septaltallsystemet. Skriv et program som viser navnet på sifrene til et tall som har en verdi mindre enn 4, på russisk, og navnet på sifrene til et tall som har en verdi større enn eller lik 4,

på engelsk.
26.
Gitt et tosifret positivt heltall i det heksadesimale tallsystemet. Skriv et program som viser navnet på sifrene til et tall med en verdi mindre enn 3 på russisk, og navnet på sifrene til et tall med en verdi større enn eller lik 3,

på engelsk.
27.
De to første bokstavene (ufølsom for store og små bokstaver, både små og store) i navnet på måneden i året er gitt. Skriv et program som viser hele navnet på måneden i året på russisk.
28.
De to første bokstavene (ufølsom for store og små bokstaver, både små og store) i navnet på ukedagen er gitt. Skriv et program som viser hele ukens navn på russisk.
29.
Den gamle japanske kalenderen vedtok en 60-års syklus, bestående av fem 12-års undersykluser. Undersykler ble utpekt med fargenavn: grønn, rød, gul, hvit og svart. Innenfor hver undersyklus ble årene oppkalt etter dyr: rotte, ku, tiger, hare, drage, slange, hest, sau, ape, kylling, hund og gris (1984 - den grønne rottens år - var begynnelsen på det neste syklus). Skriv et program som skriver inn nummeret til et bestemt år e.Kr. og skriver ut navnet i henhold til den gamle japanske kalenderen.
30.
Gitt et tosifret positivt heltall i det nisifrede tallsystemet. Skriv et program som viser navnet på sifrene til et tall med en verdi større enn 5 på russisk, og navnet på sifrene til et tall med en verdi mindre enn eller lik 5,

på engelsk.

88 Programmering av lineære algoritmer i systemet C++ Builder
4 PROGRAMMERING SYKLISK
ALGORITMER I C++BUILDER-SYSTEMET
Denne delen undersøker språkløkkeoperatorene
C++, tilegnelse av ferdigheter i programmering av sykliske algoritmer, introduksjon
ja, kompilering og feilsøking av programmer.
4.1
Enkle konsepter
På tungen C++ Builder Det er tre sløyfeoperatører:
1.
Løkke med forutsetning ( samtidig som);
2.
Løkke med postcondition ( gjøre);
3.
Løkke med teller ( til).
Sløyfeoperatør med forutsetning samtidig som (Figur 4.1):
samtidig som(tilstand) (løkkelegeme)
Figur 4.1

Sløyfeoperatøralgoritmediagram samtidig som
Hvis resultatet av å beregne tilstanden er ekte(sant), så utføres løkkens kropp og overgangen til kontroll av tilstanden utføres på nytt. Hvis resultatet av å beregne tilstanden er falsk(false), så går løkken ut og går til setningen etter den sykliske operatoren samtidig som.
Hvis før den første utførelsen av løkken var verdien av uttrykket falsk, utføres ikke selve sløyfen i det hele tatt, og overgangen til neste setning skjer.
Betingelse
Løkkekropp
Ja
Nei

Programmering med endimensjonale arrays
89
Eksempel:
Regn ut summen av oddetall i området fra 1 til 10.
(int k=1, s=0; mens (k (s+=k; k+=2;
}
}
Sløyfeoperatør med postcondition gjøre (Figur 4.2):
gjøre(løkkekropp) samtidig som(betingelse); ja nei betingelse
Løkkekropp
Figur 4.2

Sløyfeoperatøralgoritmediagram gjør mens
Tilstanden er et uttrykk av en logisk type, sløyfens kropp er en enkel eller sammensatt setning.
Statement loop body

Velg sammen med læreren en oppgave for selvstendig arbeid fra øvelsene nedenfor.

1. Regn ut verdiene til uttrykket:

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

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

c) odd(trunc(10*p)) ved p=0,182;

d) ikke oddetall(n) for n=0;

e) t og (p mod 3=0) med t=sann, p=101010;

e) (x*y<>0) og (y>x) for x=2, y=1;

g) (x*y<>0) eller (y>x) for x=2, y=1;

h) a eller (ikke b) når a=usant, b=sant;

2. Skriv en relasjon i Pascal som er sann når den angitte betingelsen er oppfylt og usann ellers:

a) hele tallet k er delelig med 7;

b) ligningen har ingen reelle røtter;

c) punkt (x, y) ligger utenfor sirkelen med radius R med sentrum i punktet (1,0);

d) det naturlige tallet N er kvadratet av det naturlige tallet;

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

og) (ikke bruk ikke-operasjonen)g

h) minst én av de logiske variablene a og b har verdien True;

i) begge de logiske variablene a og b har verdien Sann.

3. Angi rekkefølgen på operasjonene når du beregner uttrykk:

a) a og b eller ikke c og d;

b) (x>=0) eller ikke c og d.

4. Beregn følgende uttrykk for a=sant, b=usant:

a) a eller b og ikke a;

b) (a eller b) og ikke a;

c) ikke a og b;

d) ikke (a og b)

5. Skriv et uttrykk i Pascal som er sant når den angitte betingelsen er oppfylt og usann ellers:

a) x tilhører segmentet ;

b) x ligger utenfor segmentet;

c)* x tilhører segmentet eller [-1, 1];

d)* x ligger utenfor segmentene og [-1, 1];

e) hvert av tallene x, y, z er positive;

g) ingen av tallene x, y, z er positive;

h) bare ett av tallene x, y, z er positivt;

i) logisk variabel a har verdien True, logisk variabel b har verdien False;

j)* et år med serienummer y er et skuddår (et skuddår hvis tallet er et multiplum av 4, men av multiplum av 100 er bare multipler av 400 skuddår, for eksempel 1700, 1800 og 1900 er ikke-skuddår, 2000 er et skuddår).

6. Tegn på planet (x, y) området der og bare det angitte uttrykket er sant:

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

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

c) (trunc(y)=0 og (rund(x)=0);

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

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

7) Det er en betinget operatør:

writeln ('hurra!')

writeln ('dårlig...')

Er det mulig å erstatte det med følgende utsagn:

a) hvis d=10 b) hvis ikke (d=10)

writeln (‘hurra!’) writeln (‘hurra!’)

writeln('dårlig...'); writeln('dårlig...');

c) hvis ikke (d=10) d) hvis ikke (d<>10)

writeln ('dårlig...') writeln ('dårlig...')

writeln('hurra!'); writeln('hurra!');

8) Hva vil være verdiene til variablene j, k etter å ha utført den betingede setningen:

hvis startverdiene til variablene er like:

Merk. Som et resultat av å utføre dec (k,2)-operatoren, reduseres verdien av variabelen k med 2.

Variabler av boolsk type er beskrevet ved hjelp av en identifikator boolsk . De kan bare ha to betydninger - Falsk (å ligge) Og ekte (ekte). De er også beskrevet i avsnittet om variabelbeskrivelse. Var<имя>:boolsk;

Logiske uttrykk kan inkludere:

n logiske verdier,

n relasjonsoperasjoner (<- меньше, >- mer,<=- меньше или равно, >=- større enn eller lik,<>- ikke lik, =- lik).

n logiske operasjoner og, eller, ikke

n des. handlinger og funksjoner


Turbo Pascal har logiske operasjoner som gjelder variabler av den logiske typen. Dette er operasjonene ikke, og, eller og xor.

Operasjon ikke(ikke) har en operand og danner dens logiske negasjon. Resultatet av ikke-operasjonen er False hvis operanden er sann, og True hvis operanden er usann. Så, ikke sant usant (usannhet er en løgn) ikke usant sant (ikke en løgn er sannhet).

Resultat av operasjonen og(og) er sann bare hvis begge operandene er sanne, og usann i alle andre tilfeller (logisk multiplikasjon).

Resultat av operasjonen eller(eller) er sann hvis en av operandene er sanne, og usann bare hvis begge operandene er usann (logisk addisjon).

Logiske operasjoner, relasjonsoperasjoner og aritmetiske operasjoner vises ofte i samme uttrykk. I dette tilfellet må relasjonene til venstre og høyre for det logiske operasjonstegnet være omsluttet av parentes, siden logiske operasjoner har høyere prioritet. Generelt aksepteres følgende prioritering av operasjoner:

2. og, *, /, div, mod

3. eller, +, -

4. relasjonsoperasjoner (<- меньше, >- mer,<=- меньше или равно, >=- større enn eller lik,<>- ikke lik, =- lik).

I tillegg kan rekkefølgen på operasjoner endres med parentes. For eksempel, i et logisk uttrykk vil vi ordne rekkefølgen av handlinger:

AorBandnot(AorB)


Operasjonen eller i parentes utføres først, etterfulgt av ikke- og, eller-operasjonene. Hvis vi erstatter verdiene True og False i stedet for variablene A og B, får vi, ved å bruke prosedyren som allerede er diskutert, verdien av hele uttrykket lik True.

Øvelse 5: . Skriv i notatboken og regn ut betydningen av uttrykkene

med a=10, b=20, c=sann, d=usann: EN)(a>5) og (b>5) og (a<20) and (b<30);

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

c) c eller d og (b=20).

Merk følgende ! I Pascal er det ingen måte å legge inn boolske data ved å bruke leseoperatoren. Det er imidlertid mulig å sende ut verdiene til variabler av boolsk type ved å bruke skriveoperatoren. For eksempel, etter å ha utført skrive (5>2)-setningen, vil True vises på skjermen.

Leksespørsmål og oppgaver:

1. Hvordan beskrives en logisk variabel og hvilke verdier kan den ta?

2. Hva kan inkluderes i logiske uttrykk. Gi eksempler på enkle logiske uttrykk.

3. Fortell oss om logiske operasjoner i Pascal. Gi eksempler på sammensatte logiske uttrykk.

4. Hva er prioriteringen av ulike operasjoner i Pascal. Gi et eksempel.


Oppgaver:

№19.

A. hele tallet k er delelig med 7;

B. Minst ett av heltallene x, y er partall;

G. x=max(x,y,z), det vil si at x er det største av de tre tallene x,y,z;

D. (ikke bruk ikke-operasjonen)

E. minst én av de logiske variablene a og b har verdien True;

G. begge de logiske variablene a og b har verdien Sann.

№20. Angi rekkefølgen på operasjonene når du evaluerer uttrykk:

EN) a og b eller ikke c og d; b) (x>=0) eller ikke c og d.

№21. Vurder følgende uttrykk når a=sant, b=usant:

EN) a eller b og ikke a; b)(a eller b) og ikke a; V) ikke a og b; G) ikke (a og b)

№22. Lag et program: Ved opptaksprøvene tok søkeren fysikk, informatikk og essay. En søker vil bli tatt opp hvis han får 5 i informatikk og scorer minst 13 poeng for tre eksamener.

§ 8. Løsning av oppgaver om temaet «Lineære programmer. Logiske verdier."

Eks. 7 . Regn ut verdiene til uttrykket:

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

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

c) odd(trunc(10*p)) ved p=0,182;

d) ikke oddetall(n) for n=0;

e) t og (p mod 3=0) med t=sann, p=101010;

e) (x*y<>0) og (y>x) for x=2, y=1;

g) (x*y<>0) eller (y>x) for x=2, y=1;

h) a eller (ikke b) når a=usant, b=sant;

Eks. 8. Skriv et uttrykk i Pascal som er sant hvis den angitte betingelsen er oppfylt og usann ellers:

a) x tilhører segmentet ;

b) x ligger utenfor segmentet;

c)* x tilhører segmentet eller [-1, 1];

d)* x ligger utenfor segmentene og [-1, 1];

e) hvert av tallene x, y, z er positive;

g) ingen av tallene x, y, z er positive;

h) bare ett av tallene x, y, z er positivt;

i) logisk variabel a har verdien True, logisk variabel b har verdien False;


j)* et år med serienummer y er et skuddår (et skuddår hvis tallet er et multiplum av 4, men av multiplum av 100 er bare multipler av 400 skuddår, for eksempel 1700, 1800 og 1900 er ikke-skuddår, 2000 er et skuddår).

Eks. 9 . Tegn på planet (x, y) et område der og bare det angitte uttrykket er sant:

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

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

c) (trunc(y)=0 og (rund(x)=0);

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

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

Eks. 10 ..Boken koster X rubler. Kjøperen har sedler i valører på 50, 10, 5, 1 rubler. Hvor mange og hva slags regninger må du ta for å betale for en bok med minimum antall regninger?

Boolske variabler oppnår vanligvis verdiene sine ved å utføre sammenligninger og matematiske operasjoner (diskutert i forrige leksjon), i tillegg til å bruke spesifikke boolske operasjoner.

Turbo Pascal har logiske operasjoner som gjelder variabler av den logiske typen. Dette er operasjonene ikke, og, eller og xor. I dette emnet skal du se på tre logiske operasjoner. Betegnelsene og resultatene av disse operasjonene er gitt i tabellen. Vurder det.

Operasjon ikke(ikke) har en operand og danner dens logiske negasjon. Resultatet av ikke-operasjonen er False hvis operanden er sann, og True hvis operanden er usann. Så,

ikke sant usann (usannhet er løgn)

ikke usant sant (ikke en løgn er sant)

Resultat av operasjonen og(og) er sann bare hvis begge operandene er sanne, og usann i alle andre tilfeller.

Resultat av operasjonen eller(eller) er sann hvis en av operandene er sanne, og usann bare hvis begge operandene er usanne.

Trening . Prøv å bestemme betydningen av boolske operasjoner for utsagn:

  1. Et skolebarn blir hjemme i vinterferien eller drar på ferie et sted.
  2. Philip Kirkorov er en sanger og skurtresker.
  3. Skolebarn er gutter og jenter..

Logiske operasjoner, relasjonsoperasjoner og aritmetiske operasjoner vises ofte i samme uttrykk. I dette tilfellet må relasjonene til venstre og høyre for det logiske operasjonstegnet omsluttes i parentes, siden logiske operasjoner har høyere prioritet. Generelt aksepteres følgende prioritering av operasjoner:

  • og, *, /, div, mod
  • eller, +, -
  • forholdsoperasjoner..

. Den logiske operasjonen og kalles også logisk multiplikasjon, og den logiske operasjonen eller kalles også logisk addisjon.

I tillegg kan rekkefølgen på operasjoner endres med parentes. For eksempel, i et logisk uttrykk vil vi ordne rekkefølgen av handlinger

A eller B og ikke (A eller B)

Operasjonen eller i parentes utføres først, etterfulgt av ikke- og, eller-operasjonene. Hvis vi erstatter verdiene True og False i stedet for variablene A og B, får vi, ved å bruke prosedyren som allerede er diskutert, verdien av hele uttrykket lik True.

Trening . Skriv ned i notatboken og beregn verdiene til uttrykkene for a=10, b=20, c=sann, d=usann:

  • (a>5) og (b>5) og (a<20) and (b<30);
  • ikke (a<15) or not (b<30);
  • c eller d og (b=20);

Merk følgende! I Pascal er det ingen måte å legge inn boolske data ved å bruke leseoperatoren. Det er imidlertid mulig å sende ut verdiene til variabler av boolsk type ved å bruke skriveoperatoren.

For eksempel, etter å ha utført skrive (5>2)-setningen, vil True vises på skjermen.

Selvstendig arbeid

Velg sammen med læreren en oppgave for selvstendig arbeid fra øvelsene nedenfor.

  1. Regn ut verdiene til uttrykket:

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

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

    c) odd(trunc(10*p)) ved p=0,182;

    d) ikke oddetall(n) for n=0;

    e) t og (p mod 3=0) med t=sann, p=101010;

    e) (x*y<>0) og (y>x) for x=2, y=1;

    g) (x*y<>0) eller (y>x) for x=2, y=1;

    h) a eller (ikke b) når a=usant, b=sant;

  2. Skriv en relasjon i Pascal som er sann hvis den angitte betingelsen er oppfylt og usann ellers:

    a) hele tallet k er delelig med 7;

    b) punkt (x, y) ligger utenfor sirkelen med radius R med sentrum i punktet (1,0);

    c) det naturlige tallet N er kvadratet av det naturlige tallet;

    d) 0

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

    e) minst én av de logiske variablene a og b har verdien True;

    g) begge de logiske variablene a og b har verdien Sann.

  3. Angi rekkefølgen på operasjonene når du evaluerer uttrykk:

    a) a og b eller ikke c og d;

    b) (x>=0) eller ikke c og d.

  4. Vurder følgende uttrykk når a=sant, b=usant:

    a) a eller b og ikke a;

    b) (a eller b) og ikke a;

    c) ikke a og b;

    d) ikke (a og b)

  5. Skriv et uttrykk i Pascal som er sant hvis den angitte betingelsen er oppfylt og usann ellers:

    a) x tilhører segmentet ;

    b) x ligger utenfor segmentet;

    c)* x tilhører segmentet eller [-1, 1];

    d)* x ligger utenfor segmentene og [-1, 1];

    e) hvert av tallene x, y, z er positive;

    g) ingen av tallene x, y, z er positive;

    h) bare ett av tallene x, y, z er positivt;

    i) logisk variabel a har verdien True, logisk variabel b har verdien False;

    j)* et år med et serienummer y er et skuddår (et skuddår hvis tallet er et multiplum av 4, men av multiplum av 100 er bare multipler av 400 skuddår, for eksempel 1700, 1800 og 1900 er ikke-skuddår, 2000 er et skuddår).

  6. Tegn på planet (x, y) et område der og bare det angitte uttrykket er sant:

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

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

    c) (trunc(y)=0 og (rund(x)=0);

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

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

  7. Det er en betinget operatør:
    hvis d<>10
    deretter
    writeln ('hurra!')
    ellers
    writeln('dårlig...');

    Er det mulig å erstatte det med følgende utsagn:

  8. Hva vil være verdiene til variablene j, k etter å ha utført den betingede setningen:
    hvis j>k
    deretter
    j:=k-2
    ellers
    dek(k,2);
    hvis startverdiene til variablene er like:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Merk . Som et resultat av å utføre dec (k,2)-operatoren, reduseres verdien av variabelen k med 2.