Expresii logice. Expresiile logice X aparține segmentului

Variabilele booleene își obțin de obicei valorile prin efectuarea de comparații și operații matematice (discutate în lecția anterioară), precum și prin utilizarea unor operații booleene specifice.

Turbo Pascal are operații logice care se aplică variabilelor de tip logic. Acestea sunt operațiunile nu, și, sau și xor. În acest subiect veți analiza trei operații logice. Denumirile și rezultatele acestor operațiuni sunt date în tabel. Luați în considerare.

Operațiunea nu(nu) are un operand și își formează negația logică. Rezultatul operației not este False dacă operandul este adevărat și True dacă operandul este fals. Aşa,

nu Adevărat Fals (neadevărul este o minciună)

nu fals adevărat (nici o minciună nu este adevărată)

Rezultatul operației şi(și) este adevărată numai dacă ambii operanzi ai săi sunt adevărate și false în toate celelalte cazuri.

Rezultatul operației sau(sau) este adevărat dacă oricare dintre operanzii săi este adevărat și fals numai dacă ambii operanzi sunt falși.

Exercita . Încercați să determinați semnificația operațiilor booleene pentru instrucțiuni:

  1. Şcolar mai departe sarbatori de iarna stă acasă sau pleacă undeva în vacanță.
  2. Philip Kirkorov este cântăreț și operator de combină.
  3. Scolarii sunt baieti si fete..

Operații logice, operațiile relaționale și operațiile aritmetice apar adesea în aceeași expresie. În acest caz, relațiile la stânga și la dreapta semnului operației logice trebuie să fie incluse în paranteze, deoarece operațiile logice au prioritate mai mare. În general, se acceptă următoarea prioritate a operațiunilor:

  • și, *, /, div, mod
  • sau, +, -
  • operațiuni de relație..

. Operația logică și se mai numește și înmulțire logică, iar operația logică sau se mai numește și adunare logică.

În plus, ordinea operațiilor poate fi modificată prin paranteze. De exemplu, într-o expresie logică vom aranja ordinea acțiunilor

A sau B și nu (A sau B)

Operația sau cuprinsă între paranteze este efectuată mai întâi, urmată de operațiile not, and, or. Dacă înlocuim valorile True și False în locul variabilelor A și B, atunci, folosind procedura deja discutată, obținem valoarea întregii expresii egală cu True.

Exercita . Notați în caiet și calculați valorile expresiilor pentru a=10, b=20, c=adevărat, d=fals:

  • (a>5) și (b>5) și (a<20) and (b<30);
  • nu (a<15) or not (b<30);
  • c sau d şi (b=20);

Atenţie! În Pascal, nu există nicio modalitate de a introduce date booleene folosind operatorul de citire. Cu toate acestea, este posibil să scoateți valorile variabilelor de tip boolean folosind operatorul de scriere.

De exemplu, după executarea instrucțiunii write (5>2), va fi afișat True pe ecran.

Munca independentă

Cu profesorul tău, alege o sarcină pentru muncă independentă din exercițiile de mai jos.

  1. Calculați valorile expresiei:

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

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

    c) impar(trunc(10*p)) la p=0,182;

    d) nu impar(n) pentru n=0;

    e) t și (p mod 3=0) cu t=adevărat, p=101010;

    e) (x*y<>0) și (y>x) pentru x=2, y=1;

    g) (x*y<>0) sau (y>x) pentru x=2, y=1;

    h) a sau (nu b) când a=Fals, b=Adevărat;

  2. Scrieți o relație în Pascal care este adevărată dacă condiția specificată este îndeplinită și falsă în caz contrar:

    a) întregul k este divizibil cu 7;

    b) punctul (x, y) se află în afara cercului de rază R cu centrul în punctul (1,0);

    c) numărul natural N este pătratul numărului natural;

    d) 0

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

    e) cel puţin una dintre variabilele logice a şi b are valoarea Adevărat;

    g) ambele variabile logice a și b au valoarea Adevărat.

  3. Specificați ordinea operațiilor la evaluarea expresiilor:

    a) a și b sau nu c și d;

    b) (x>=0) sau nu c și d.

  4. Evaluați următoarele expresii când a=adevărat, b=fals:

    a) a sau b și nu a;

    b) (a sau b) și nu a;

    c) nu a și b;

    d) nu (a și b)

  5. Scrieți o expresie în Pascal care este adevărată dacă condiția specificată este îndeplinită și falsă în caz contrar:

    a) x aparține segmentului ;

    b) x se află în afara segmentului;

    c)* x aparține segmentului sau [-1, 1];

    d)* x se află în afara segmentelor și [-1, 1];

    e) fiecare dintre numerele x, y, z este pozitiv;

    g) niciunul dintre numerele x, y, z nu este pozitiv;

    h) doar unul dintre numerele x, y, z este pozitiv;

    i) variabila logică a are valoarea Adevărat, variabila logică b are valoarea Fals;

    j)* un an cu un număr de serie y este un an bisect (un an bisect dacă numărul său este un multiplu de 4, dar dintre multiplii lui 100, numai multiplii de 400 sunt ani bisecti, de exemplu, 1700, 1800 și 1900 sunt ani non-bisecți, 2000 este un an bisect).

  6. Desenați pe planul (x, y) o regiune în care și numai în care expresia indicată este adevărată:

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

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

    c) (trunc(y)=0 și (rotunzi(x)=0);

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

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

  7. Există un operator condiționat:
    dacă d<>10
    apoi
    writeln (‘ura!’)
    altfel
    writeln('rau...');

    Este posibil să-l înlocuiți cu următoarele afirmații:

  8. Care vor fi valorile variabilelor j, k după executarea instrucțiunii condiționate:
    dacă j>k
    apoi
    j:=k-2
    altfel
    dec(k,2);
    dacă valorile inițiale ale variabilelor sunt egale:
    a) j=3, k=5;
    b) j=3, k=3;
    c) j=3, k=2.

Nota . Ca urmare a executării operatorului dec (k,2), valoarea variabilei k este redusă cu 2.

Cu profesorul tău, alege o sarcină pentru muncă independentă din exercițiile de mai jos.

1. Calculați valorile expresiei:

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

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

c) impar(trunc(10*p)) la p=0,182;

d) nu impar(n) pentru n=0;

e) t și (p mod 3=0) cu t=adevărat, p=101010;

e) (x*y<>0) și (y>x) pentru x=2, y=1;

g) (x*y<>0) sau (y>x) pentru x=2, y=1;

h) a sau (nu b) când a=Fals, b=Adevărat;

2. Scrieți o relație în Pascal care este adevărată când condiția specificată este îndeplinită și falsă în caz contrar:

a) întregul k este divizibil cu 7;

b) ecuația nu are rădăcini reale;

c) punctul (x, y) se află în afara cercului de rază R cu centrul în punctul (1,0);

d) numărul natural N este pătratul numărului natural;

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

şi) (nu utilizați operațiunea not)g

h) cel puţin una dintre variabilele logice a şi b are valoarea Adevărat;

i) ambele variabile logice a și b au valoarea Adevărat.

3. Indicați ordinea operațiilor la calcularea expresiilor:

a) a și b sau nu c și d;

b) (x>=0) sau nu c și d.

4. Calculați următoarele expresii pentru a=adevărat, b=fals:

a) a sau b și nu a;

b) (a sau b) și nu a;

c) nu a și b;

d) nu (a și b)

5. Scrieți o expresie în Pascal care este adevărată dacă condiția specificată este îndeplinită și falsă în caz contrar:

a) x aparține segmentului ;

b) x se află în afara segmentului;

c)* x aparține segmentului sau [-1, 1];

d)* x se află în afara segmentelor și [-1, 1];

e) fiecare dintre numerele x, y, z este pozitiv;

g) niciunul dintre numerele x, y, z nu este pozitiv;

h) doar unul dintre numerele x, y, z este pozitiv;

i) variabila logică a are valoarea Adevărat, variabila logică b are valoarea Fals;

j)* un an cu un număr de serie y este un an bisect (un an bisect dacă numărul său este un multiplu de 4, dar dintre multiplii lui 100, numai multiplii de 400 sunt ani bisecti, de exemplu, 1700, 1800 și 1900 sunt ani non-bisecți, 2000 este un an bisect).

6. Desenați pe planul (x, y) aria în care și numai în care expresia indicată este adevărată:

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

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

c) (trunc(y)=0 și (rotunzi(x)=0);

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

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

7) Există un operator condiționat:

writeln (‘ura!’)

scrieți („rău...”)

Este posibil să-l înlocuiți cu următoarele afirmații:

a) dacă d=10 b) dacă nu (d=10)

writeln (‘ura!’) writeln (‘ura!’)

writeln('rau...'); writeln('rau...');

c) dacă nu (d=10) d) dacă nu (d<>10)

writeln ('rău...') writeln ('rău...')

writeln('ura!'); writeln('ura!');

8) Care vor fi valorile variabilelor j, k după executarea instrucțiunii condiționate:

dacă valorile inițiale ale variabilelor sunt egale:

Nota. Ca urmare a executării operatorului dec (k,2), valoarea variabilei k este redusă cu 2.

Variabilele de tip boolean sunt descrise folosind un identificator boolean . Ele pot lua doar două sensuri - Fals (minciună)Şi Adevărat (adevărat). Ele sunt descrise și în secțiunea descriere a variabilelor. Var<имя>:Boolean;

Expresiile logice pot include:

n valori logice,

n operațiuni de relație (<- меньше, >- Mai mult,<=- меньше или равно, >=- mai mare sau egal cu,<>- nu este egal, =- egal).

n operații logice Și, Sau, Nu

n dec. acțiuni și funcții


Turbo Pascal are operații logice care se aplică variabilelor de tip logic. Acestea sunt operațiunile nu, și, sau și xor.

Operațiunea nu(nu) are un operand și își formează negația logică. Rezultatul operației not este False dacă operandul este adevărat și True dacă operandul este fals. Deci, nu Adevărat Fals (neadevărul este o minciună) nu Fals Adevărat (nici o minciună este adevăr).

Rezultatul operației şi(și) este adevărată numai dacă ambii operanzi ai săi sunt adevărate și false în toate celelalte cazuri (înmulțire logică).

Rezultatul operației sau(sau) este adevărat dacă oricare dintre operanzii săi este adevărat și fals numai dacă ambii operanzi sunt falși (adăugare logică).

Operațiile logice, operațiile relaționale și operațiile aritmetice apar adesea în aceeași expresie. În acest caz, relațiile la stânga și la dreapta semnului operației logice trebuie incluse între paranteze, deoarece operațiile logice au prioritate mai mare. În general, se acceptă următoarea prioritate a operațiunilor:

2. și, *, /, div, mod

3. sau, +, -

4. operațiuni de relație (<- меньше, >- Mai mult,<=- меньше или равно, >=- mai mare sau egal cu,<>- nu este egal, =- egal).

În plus, ordinea operațiilor poate fi modificată prin paranteze. De exemplu, într-o expresie logică vom aranja ordinea acțiunilor:

AorBandnot(AorB)


Operația sau cuprinsă între paranteze este efectuată mai întâi, urmată de operațiile not, and, or. Dacă înlocuim valorile True și False în locul variabilelor A și B, atunci, folosind procedura deja discutată, obținem valoarea întregii expresii egală cu True.

Exercițiul 5: . Scrie în caiet și calculează semnificațiile expresiilor

cu a=10, b=20, c=adevărat, d=fals: O)(a>5) și (b>5) și (a<20) and (b<30);

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

c) c sau d și (b=20).

Atenţie ! În Pascal, nu există nicio modalitate de a introduce date booleene folosind operatorul de citire. Cu toate acestea, este posibil să scoateți valorile variabilelor de tip boolean folosind operatorul de scriere. De exemplu, după executarea instrucțiunii write (5>2), pe ecran va fi afișat True.

Întrebări și sarcini legate de teme:

1. Cum este descrisă o variabilă logică și ce valori poate lua?

2. Ce poate fi inclus în expresiile logice. Dați exemple de expresii logice simple.

3. Vorbește-ne despre operațiile logice în Pascal. Dați exemple de expresii logice compuse.

4. Care este prioritatea diferitelor operațiuni în Pascal. Da un exemplu.


Sarcini:

№19.

A. întregul k este divizibil cu 7;

B. Cel puțin unul dintre numerele întregi x, y este par;

G. x=max(x,y,z), adică x este cel mai mare dintre cele trei numere x,y,z;

D. (nu utilizați operațiunea not)

E. cel puţin una dintre variabilele logice a şi b are valoarea Adevărat;

G. ambele variabile logice a și b au valoarea Adevărat.

№20. Specificați ordinea operațiilor la evaluarea expresiilor:

O) a și b sau nu c și d; b) (x>=0) sau nu c și d.

№21. Evaluați următoarele expresii când a=adevărat, b=fals:

O) a sau b și nu a; b)(a sau b) și nu a; V) nu a și b; G) nu (a și b)

№22. Creați un program: la examenele de admitere, solicitantul a luat fizică, informatică și eseu. Un solicitant va fi admis dacă obține nota 5 la informatică și obține cel puțin 13 puncte la trei examene. Este adevărat că a fost admis (iese Adevărat/Fals)?

§ 8. Rezolvarea problemelor pe tema „Programe liniare. Valori logice.”

Ex. 7 . Calculați valorile expresiei:

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

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

c) impar(trunc(10*p)) la p=0,182;

d) nu impar(n) pentru n=0;

e) t și (p mod 3=0) cu t=adevărat, p=101010;

e) (x*y<>0) și (y>x) pentru x=2, y=1;

g) (x*y<>0) sau (y>x) pentru x=2, y=1;

h) a sau (nu b) când a=Fals, b=Adevărat;

Ex. 8. Scrieți o expresie în Pascal care este adevărată dacă condiția specificată este îndeplinită și falsă în caz contrar:

a) x aparține segmentului ;

b) x se află în afara segmentului;

c)* x aparține segmentului sau [-1, 1];

d)* x se află în afara segmentelor și [-1, 1];

e) fiecare dintre numerele x, y, z este pozitiv;

g) niciunul dintre numerele x, y, z nu este pozitiv;

h) doar unul dintre numerele x, y, z este pozitiv;

i) variabila logică a are valoarea Adevărat, variabila logică b are valoarea Fals;


j)* un an cu un număr de serie y este un an bisect (un an bisect dacă numărul său este un multiplu de 4, dar dintre multiplii lui 100, numai multiplii de 400 sunt ani bisecti, de exemplu, 1700, 1800 și 1900 sunt ani non-bisecți, 2000 este un an bisect).

Ex. 9 . Desenați pe planul (x, y) o regiune în care și numai în care expresia indicată este adevărată:

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

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

c) (trunc(y)=0 și (rotunzi(x)=0);

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

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

Ex. 10 ..Cartea costă X ruble. Cumpărătorul are bancnote în valori de 50, 10, 5, 1 ruble. Câte și ce fel de facturi trebuie să iei pentru a plăti o carte cu numărul minim de facturi?

Lecția din seria „ Algoritmi geometrici»

Bună dragă cititor!

Astăzi ne vom uita la o altă problemă tipică din seria algoritmilor geometrici. Să scriem o funcție care va verifica apartenenta arbitrar puncte de pe un segment, dat de coordonatele începutului și sfârșitului său.

Pentru a implementa operații de comparare asupra datelor reale, vom mai scrie două funcții: funcția EqPoint(), care va verifica dacă două puncte din plan coincid și funcția RealMoreEq(), pe care o vom folosi pentru a verifica „>=” relație (mai mare sau egală). Motivul introducerii funcțiilor speciale ne este deja cunoscut.

Sarcină. Verifica, aparține dacă punct pe un segment.

Punctele să fie punctele de început și de sfârșit ale segmentului. — un punct arbitrar pe plan.

Un vector cu un început într-un punct și un sfârșit într-un punct va avea coordonate (x2-x1, y2-y1).

Dacă P(x, y) este un punct arbitrar, atunci coordonatele vectorului sunt egale cu: (x-x1, y – y1).

Punctul P va aparține segmentului dacă:

Programul geom3; Const_Eps: Real = 1e-3; (acuratețea calculului) var x1,y1,x2,y2,x,y:real; Funcția RealEq(Const a, b:Real):Boolean; (strict egal) începe RealEq:= Abs(a-b)<= _Eps End; {RealEq} Function RealMoreEq(Const a, b:Real):Boolean; {больше или равно} begin RealMoreEq:= a - b >=_EpsEnd; (RealMoreEq) Funcția EqPoint(x1,y1,x2,y2:real):Boolean; (Coincid două puncte din plan) începe EqPoint:=RealEq(x1,x2) și RealEq(y1,y2) end; (EqPoint) Funcția AtOtres(x1,y1,x2,y2,x,y:real):Boolean; (Se verifică dacă punctul P aparține segmentului P1P2) Începeți dacă EqPoint(x1,y1,x2,y2) Atunci AtOtres:= EqPoint(x1,y1,x,y) (punctele P1 și P2 coincid, rezultatul este determinat de coincidenta punctelor P1 si P) Altfel AtOtres:= RealEq((x-x1)*(y2-y1)- (y-y1)*(x2-x1),0)and (RealMoreEq(x,x1)si RealMoreEq( x2,x)Sau RealMoreEq(x ,x2)și RealMoreEq(x1,x)) final; (AtOtres) begin (principal) writeln(Introduceți coordonatele punctelor: x1,y1,x2,y2,x,y"); readln(x1,y1,x2,y2,x,y); dacă AtOtres(x1, y1,x2 ,y2,x,y) apoi writeln("Da.") else writeln("Nu."); Sfârşit. (principal)

Rezultatele executării programului.

Introduceți coordonatele punctului: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Da.

Rezultatele testelor în programul GeoGebra:


Astăzi am scris o funcție AtOtres(), care verifică dacă un punct arbitrar aparține unui segment specificat de coordonatele sale.

Au fost introduse încă două funcții: EqPoint() și RealMoreEq() pentru a implementa operațiuni de comparare pe date reale. Primul verifică dacă două puncte din plan coincid, al doilea este folosit pentru a verifica relația „>=”.

În lecția următoare, pe baza unor proceduri scrise anterior, vom scrie o procedură pentru determinarea coordonatelor punctului de intersecție a două segmente.

Cu asta îmi iau rămas bun de la tine. Ne vedem la următoarea lecție.

. X aparține segmentului ;
x se află în afara segmentului;
x aparține segmentului sau [-1,1];
x se află în afara segmentului sau [-1,1].
3.
Explicați structura și regulile pentru executarea instrucțiunilor condiționate.
4.
Scrieți acțiunea specificată ca o singură instrucțiune condiționată:
cos
2
x, la 0x la =
1-păcat
2
x, altfel.
5.
z
int z=0, x=1, y=

1;

80 Programare algoritmi liniariîn sistem C++Builder
dacă (x>0) dacă (y>0) z=1; altfel z=2;
6.
Ce valoare va avea variabila? z dupa executarea operatorilor:
int z=0, x=

1, y=1;
dacă (x) ( dacă (y>0) z=1;) altfel z=2;
7.
Ce valoare va avea variabila? z dupa executarea operatorilor:
int z=0, x=0, y=1;
dacă (x) ( dacă (y>0) z=1;) altfel z=2;
8.
Ce valoare va avea variabila? z dupa executarea operatorilor:
int z=0, x=3, y=1;
dacă (x) ( dacă (y) z=1;) altfel z=2;
9.
Vă rugăm să indicați erorile în următoarele afirmații:
dacă (1
altfel x=0; y+= 1;
10.
int z=0, x=0, y=1;
dacă (!x) ( dacă (!(y

1)) z=1;) altfel z=2;
11.
Ce valoare va avea variabila z după executarea instrucțiunilor:
int z=0, x=1, y=1;
dacă (!x) ( dacă (!(y

1)) z=1;) altfel z=2;
12.
Găsiți erori în fragmentul de program:
(int n,x; comutator (k) caz + : x:=x-4 pauză; caz

-

,

*

, x=5;
}
Ce reguli au fost încălcate și cum pot fi corectate greșelile?


81
3.4
Sarcini individuale pentru secțiunea 3
Fiecare elev trebuie să rezolve două probleme de primul și al doilea nivel de complexitate.
Probleme de primul nivel de dificultate.
1.
Vi se oferă un număr întreg pozitiv de patru cifre. Scrieți un program care imprimă adevărat sau falsîn funcție de îndeplinirea sau nu condiția specificată: suma a 1 și 4 cifre este egală cu produsul dintre 2 și 3 cifre.
2.
Având în vedere numerele reale x, y. Dacă x și y sunt negative, atunci înlocuiți fiecare valoare cu modulul său; dacă doar unul dintre ele este negativ, atunci creșteți ambele valori cu 5,5; în alte cazuri, reduceți ambele valori de 10 ori.
3.
Având în vedere numerele reale x, y. Dacă x și y sunt pozitive, atunci reduceți fiecare valoare de 5 ori; dacă ambele valori sunt în intervalul [-3, 9], înlocuiți ambele valori cu 0; în alte cazuri, creșteți x și y cu 3.
4.
Datele numere reale x, y (xy). Înlocuiți cel mai mic dintre aceste două numere cu jumătatea lor, iar cel mai mare cu produsul lor dublu.
5.
Dacă suma a trei numere reale distincte în perechi x, y, z este mai mică decât 1, atunci înlocuiți cel mai mic dintre aceste trei numere cu jumătatea sumei celorlalte două; în caz contrar, înlocuiți cel mai mic dintre x și y cu jumătatea sumei celor două valori rămase.
6.
Datele numere reale a, b, c, d. Dacă a b>c>d, apoi lăsați numerele neschimbate; în caz contrar, înlocuiți toate numerele cu pătrate.
7.
Stabiliți dacă un număr întreg de șase cifre este norocos. (Un număr se numește norocos dacă suma primelor sale trei cifre este egală cu suma ultimelor trei cifre.)
8.
adevărat sau falsîn funcție de îndeplinirea sau nu condiția specificată: pentru numere reale arbitrare a, b, c, determinați dacă ecuația ax
2
+bx+c=0 cel puțin o soluție reală.

82 Programarea algoritmilor liniari în sistem C++Builder
9.
Pentru a rezolva următoarea problemă, scrieți un program care se imprimă adevărat sau falsîn funcție de îndeplinirea sau nu condiția specificată: determinați dacă suma primelor două cifre ale unui număr dat de patru cifre este egală cu suma ultimelor două numere ale acestuia.
10.
În unele instituție de învățământ Se aplică următoarele reguli de admitere. Solicitanții susțin două examene, care sunt evaluate în funcție de
100 de puncte fiecare. Dacă un solicitant obține cel puțin 150 de puncte, atunci aceasta dă dreptul de a se înscrie la catedra cu normă întreagă, de la 100 la 149 - la catedra de seară; sub 100 de puncte înseamnă refuzul admiterii la studii. Scrieți un program care, în funcție de numărul de puncte obținute, să informeze solicitantul cu privire la drepturile sale de admitere.
11.
Scrieți un program folosind operatorul de selecție pentru a obține o descriere verbală a notelor. (1 – „rău”, 2 –
„nesatisfăcător”, 3 – „satisfăcător”, 4 – „bine”, 5 –
"Mare".)
12.
Pentru a rezolva următoarea problemă, scrieți un program care se imprimă adevărat sau falsîn funcție de îndeplinirea sau nu a condiției specificate: stabiliți dacă printre cifrele unui număr dat de trei cifre există unele identice.
13.
Scrieți un program care imprimă adevărat, dacă data d1, m1 precede (în termen de un an) data d2, m2și sens fals altfel.
14.
Scrieți un program folosind un operator de selecție care, pe baza primei litere a numelui, afișează numele complet pe ecran
(Ivan, Peter, Nikolai, Vladimir, Georgy).
15.
Scrieți un program folosind operatorul de selecție, care, pe baza cifrei introduse, 0≤ k≤ 5 tipărește numele acestui număr în rusă și engleză.
16.
Dat un număr întreg k (1

k

365). Stabilește ce va fi a k-a zi an - un weekend sau o zi lucrătoare, dacă 1 ianuarie este luni.
17.
Dat număr real x. Calcula f, Dacă:











păcat
,
1 0
,
0 5
2 11 2
cazuri
restul
V
x
x
x
la
x
x
x
la
f

Programare cu tablouri unidimensionale
83 18.
Dat un număr real x. Scrieți un program de calculat f:












34 5
,
12 3
lg ln
,
3 5
1 3
2 4
cazuri
restul
V
x
x
x
la
x
x
x
la
f
19.
Scrieți un program folosind un operator de selecție care, pe baza primei litere a numelui orașului, afișează numele complet al orașului (Kursk, Moscova, Tula, Novgorod, Voronezh).
20.
Scrieți un program folosind un operator de selecție care, pe baza primei litere a numelui de familie, afișează numele de familie complet (Ivanov, Petrov, Sidorov, Myshkin, Shishkin).
21.
Sunt date coordonatele centrului și raza cercului. Determinați dacă un anumit punct cu coordonatele (x,y) aparține unui cerc.
22.
Scrieți un program folosind un operator de selecție care, având în vedere prima literă a numelui animalului introdus, va tipări numele complet al animalului (câine, pisică, girafă, cal, maimuță).
23.
Dat trei numere diferite a,b,c. Sortați aceste numere în ordine crescătoare astfel încât o a corespuns cel mai mic număr, b– număr mediu, c– cel mai mare.
24.
Scrieți un program folosind un operator de selecție care afișează numele zilei săptămânii prin număr (de la 1 la 7).
25.
Scrieți un program folosind un operator de selecție care afișează numele lunii anului prin număr (de la 1 la 12).
26.
Scrieți un program folosind operatorul de selecție, care, pe baza primei litere introduse a numelui anotimpului anului, tipărește numele complet al anotimpului anului.
27.
Vi se oferă un număr întreg pozitiv de cinci cifre. Scrieți un program care imprimă adevărat sau falsîn funcție de îndeplinirea sau nu condiția specificată: suma a 1, 3 și 5 cifre mai multă muncă 2 și 4 cifre.
28.
Vi se oferă un număr întreg pozitiv de patru cifre. Scrieți un program care imprimă adevărat sau falsîn funcție de

84 Programarea algoritmilor liniari în sistem C++Builder dacă condiția specificată este îndeplinită sau nu: media aritmetică 1 și
4 cifre sunt mai mari decât suma a 2 și 3 cifre.
29.
Dat o ​​cifră și un număr de trei cifre în sistemul numeric zecimal. Dacă cifra se potrivește cu cea mai mare cifră a numărului, atunci calculați suma cifrelor numărului. Dacă cifra coincide cu cifra din mijloc a numărului, atunci calculați produsul cifrelor numărului. Dacă cifra coincide cu cea mai puțin semnificativă cifră a numărului, atunci calculați media aritmetică a cifrelor numărului. Dacă niciuna dintre condiții nu este îndeplinită, atunci calculați media geometrică a cifrelor numărului.
30.
Dat o ​​cifră și un număr de trei cifre în sistemul numeric zecimal. Dacă cifra coincide cu cea mai mare cifră a numărului, atunci calculați media aritmetică a cifrelor numărului. Dacă cifra coincide cu cifra din mijloc a numărului, atunci calculați media geometrică a cifrelor numărului. Dacă cifra coincide cu cea mai puțin semnificativă cifră a numărului, atunci calculați suma cifrelor numărului. Dacă niciuna dintre condiții nu este îndeplinită, atunci calculați produsul cifrelor numărului
Probleme de al doilea nivel de complexitate.
1.
Dat un număr întreg pozitiv de două cifre în sistemul numeric ternar. Scrieți un program care afișează numele cifrelor unui număr în limba rusă dacă cea mai mare cifră a numărului este mai mare decât cea mai mică, în caz contrar
- pe engleză.
2.
Este dat un număr întreg de două cifre pozitiv în sistemul de numere de cinci cifre. Scrieți un program care să afișeze numele cifrelor unui număr în engleză dacă cea mai mare cifră a numărului este mai mare decât cea mai mică, în caz contrar
- în rusă.
3.
Este dat un număr întreg de două cifre pozitiv în sistemul de numere de cinci cifre. Scrieți un program care să afișeze numele cifrelor unui număr în engleză dacă cea mai mare cifră a numărului este exact de 2 ori mai mare decât cea mai mică, în caz contrar
- în rusă.
4.
Dat un număr întreg pozitiv de două cifre în sistemul numeric ternar. Scrieți un program care afișează numele cifrelor unui număr în limba rusă dacă cea mai mare cifră a numărului este mai mică decât cea mai mică, în caz contrar
- în limba engleză.

Programare cu tablouri unidimensionale
85 5.
Este dat un număr întreg de două cifre pozitiv în sistemul de numere de cinci cifre. Scrieți un program care afișează numele cifrelor unui număr în limba rusă.
6.
Dat un număr întreg de două cifre pozitiv în sistemul de numere octale. Scrieți un program care afișează numele cifrelor unui număr în limba rusă.
7.
Dat un număr întreg de două cifre pozitiv în sistemul de numere octale. Scrieți un program care să afișeze, dacă cifra principală este mai mică de jumătate din cifra minoră, numele cifrelor numărului în limba engleză, în caz contrar

în rusă.
8.
Este dat un număr întreg de două cifre pozitiv în sistemul de numere septale. Scrieți un program care să afișeze, dacă numerele sunt aranjate în ordine descrescătoare, numele cifrelor numărului în limba engleză, în caz contrar

în rusă.
9.
În sistemul numeric zecimal sunt date două cifre. Scrieți un program care să afișeze numele în engleză ale cifrelor sumei acestor cifre.
10.
În sistemul numeric zecimal sunt date două cifre. Scrieți un program care afișează numele în rusă ale numerelor produsului acestor numere.
11.
În sistemul numeric zecimal sunt date două cifre. Scrieți un program care să afișeze numele în limba rusă a cifrelor modulului diferenței dintre aceste cifre.
12.
În sistemul numeric zecimal sunt date două cifre. Scrieți un program care să afișeze numele cifrelor în engleză pentru câtul și restul unei diviziuni întregi a acestor numere.
13.
Dat un număr întreg pozitiv din două cifre în sistemul numeric din nouă cifre. Scrieți un program care să afișeze, dacă cea mai mare cifră este de trei ori mai mare decât cea mai mică, numele cifrelor numărului în limba engleză, în caz contrar

în rusă.
14.
Dat un număr întreg pozitiv din două cifre în sistemul numeric din nouă cifre. Scrieți un program care să afișeze numele cifrei unui număr care are o valoare mai mare în engleză și numele cifrei unui număr care are o valoare mai mică.

în rusă.

86 Programarea algoritmilor liniari în sistem C++Builder
15.
Dat un număr întreg pozitiv de două cifre în sistemul de numere septale. Scrieți un program care să afișeze numele cifrei unui număr care are o valoare mai mare în engleză și numele cifrei unui număr care are o valoare mai mică.

în rusă.
16.
Dat un număr întreg pozitiv de două cifre în sistemul numeric hexazecimal. Scrieți un program care să afișeze numele cifrelor unui număr în limba engleză.
17.
Dat două numere întregi de două cifre pozitive în sistemul numeric ternar. Scrieți un program care să afișeze numele cifrelor sumei acestor numere în rusă.
18.
Dați două numere întregi de două cifre pozitive în sistemul de numere binar. Scrieți un program care să afișeze numele cifrelor sumei acestor numere în limba engleză.
19.
Dat un număr întreg pozitiv de două cifre în sistemul numeric de cinci cifre. Scrieți un program care să afișeze, dacă numerele sunt aranjate în ordine crescătoare, numele cifrelor numărului în limba engleză și altfel

în rusă.
20.
Dat un număr întreg pozitiv de două cifre în sistemul numeric hexazecimal. Scrieți un program care afișează, dacă cea mai mare cifră este de cinci ori mai mare decât cea mai mică, numele cifrelor numărului în rusă, altfel

în limba engleză.
21.
În sistemul de numere octale sunt date două cifre. Scrieți un program care afișează numele în rusă ale cifrelor modulului diferenței dintre aceste cifre.
22.
În sistemul de numere octale sunt date două cifre. Scrieți un program care afișează numele în rusă ale cifrelor sumei acestor două cifre.
23.
Dat un număr întreg pozitiv de două cifre în sistemul de numere septale. Scrieți un program care afișează, dacă cea mai mare cifră este de trei ori mai mare decât cea mai mică, numele cifrelor numărului în rusă, altfel

în limba engleză.
24.
Dat un număr întreg pozitiv de două cifre în sistemul de numere octale. Scrieți un program care să afișeze numele cifrei unui număr care are o valoare mai mare în rusă și în

Programare cu tablouri unidimensionale
87 este rangul cifrei numărului care are cea mai mică valoare,

în limba engleză.
25.
Dat un număr întreg pozitiv de două cifre în sistemul de numere septale. Scrieți un program care afișează numele cifrelor unui număr cu o valoare mai mică de 4, în rusă, și numele cifrelor unui număr cu o valoare mai mare sau egală cu 4,

în limba engleză.
26.
Dat un număr întreg pozitiv de două cifre în sistemul numeric hexazecimal. Scrieți un program care afișează numele cifrelor unui număr cu o valoare mai mică de 3 în rusă și numele cifrelor unui număr cu o valoare mai mare sau egală cu 3,

în limba engleză.
27.
Sunt date primele două litere (insensibile la majuscule, atât litere mici, cât și majuscule) ale numelui lunii anului. Scrieți un program care să afișeze numele complet al lunii din an în limba rusă.
28.
Sunt date primele două litere (insensibile la majuscule, atât litere mici, cât și litere mari) ale numelui zilei săptămânii. Scrieți un program care să afișeze numele complet al zilei săptămânii în limba rusă.
29.
Vechiul calendar japonez a adoptat un ciclu de 60 de ani, constând din cinci subcicluri de 12 ani. Subciclurile au fost desemnate prin nume de culori: verde, roșu, galben, alb și negru. În cadrul fiecărui subciclu, anii au fost numiți după animale: șobolan, vacă, tigru, iepure de câmp, dragon, șarpe, cal, oaie, maimuță, pui, câine și porc (1984 - anul șobolanului verde - a fost începutul următorului). ciclu). Scrieți un program care introduce numărul unui anumit an d.Hr. și imprimă numele acestuia conform vechiului calendar japonez.
30.
Dat un număr întreg pozitiv din două cifre în sistemul numeric din nouă cifre. Scrieți un program care afișează numele cifrelor unui număr cu o valoare mai mare de 5 în rusă și numele cifrelor unui număr cu o valoare mai mică sau egală cu 5,

în limba engleză.

88 Programarea algoritmilor liniari în sistem C++Builder
4 CICLIC DE PROGRAMARE
ALGORITMI ÎN SISTEMUL C++ BUILDER
Această secțiune examinează operatorii buclei de limbaj
C++, dobândirea abilităților în programarea algoritmilor ciclici, introducere
da, programe de compilare și depanare.
4.1
Concepte de bază
Pe limbă C++Builder Există trei operatori de buclă:
1.
Buclă cu precondiție ( în timp ce);
2.
Bucla cu postcondiție ( do);
3.
Bucla cu contor ( pentru).
Operator de buclă cu precondiție în timp ce (Figura 4.1):
în timp ce(condiție) (corp buclă)
Figura 4.1

Diagrama algoritmului operatorului de buclă în timp ce
Dacă rezultatul calculării condiţiei este adevărat(adevărat), atunci corpul buclei este executat și trecerea la verificarea condiției este efectuată din nou. Dacă rezultatul calculării condiţiei este fals(fals), apoi bucla iese și trece la instrucțiunea care urmează operatorului ciclic în timp ce.
Dacă înainte de prima execuție a buclei valoarea expresiei a fost fals, corpul buclei nu este executat deloc și are loc trecerea la instrucțiunea următoare.
Stare
Corpul buclei
Da
Nu

Programare cu tablouri unidimensionale
89
Exemplu:
Calculați suma numerelor impare din intervalul de la 1 la 10.
( int k=1, s=0; în timp ce (k ( s+=k; k+=2;
}
}
Operator de buclă cu postcondiție do (Figura 4.2):
do(corp buclă) în timp ce(stare); da nicio conditie
Corpul buclei
Figura 4.2

Diagrama algoritmului operatorului de buclă face...în timp ce
Condiția este o expresie de tip logic, corpul buclei este o instrucțiune simplă sau compusă.
Corpul buclei declarației

mob_info