# Loginiai patikrinimo operatoriai
# Vaizdo pamoka
# Apie loginius patikrinimo operatorius
Loginiai operatoriai naudojami norint patikrinti kelias sąlygas vienu metu (o ne iš eilės kaip tai vyktų su else if). Pavyzdžiui:
- Ar vartotojas prisijungęs IR ar vartotojas turi atitinkamą rolę?
- Ar failas egzistuoja failų sistemoje ARBA yra nustatytas atsarginis failas?
- Ar studentas turi užtektinai pinigų ant bilieto IR turi galiojantį LSP?
- Ar skaičius patenka į rėžius (yra didesnis už pradžią IR yra mažesnis už pabaigą)?
- Ar prie produkto yra įrašyta kaina ARBA produktas pažymėtas kaip nemokamas?
- ...
# Sintaksė naudojant loginius patikrinimo operatorius
<sąlyga> <operatorius> <sąlyga>
- sąlyga - bet kokia sąlyga, kuri grąžina
truearbafalseatsakymą. Pavyzdžius:4 > 2, gražinatrueatsakymą. - operatorius - iš anksto numatytas operatorius, leidžiantis apjungti kelias sąlygas norimu būdu.
Galima apjungti ir daugiau sąlygų:
<sąlyga> <operatorius> <sąlyga> <operatorius> <sąlyga>
Taip pat, galima su skliaustais nurodyti prioritetus apjungiant sąlygas:
<sąlyga> <operatorius> (<sąlyga> <operatorius> <sąlyga>)
Pirma bus patikrintos sąlygos, esančios tarp skliaustų, o vėliau likusi dalis.
# Loginiai operatoriai
| Operatorius | Pavadinimas | Pavyzdys | Apibūdinimas |
|---|---|---|---|
&& | ir | x && y | grąžins true jei x ir y bus teisingi |
|| | arba | x || y | grąžins true jei x arba y bus teisingas |
! | ne | !x | grąžins true jei x nėra true |
# Operatorius &&(ir)
false && false = falsefalse && true = falsetrue && false = falsetrue && true = true
| X | Y | X and Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
# Operatorius || (arba)
false || false = falsefalse || true = truetrue || false = truetrue || true = true
| X | Y | X or Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
# Operatorius ! (ne)
!true = false!false = true
| X | !X |
|---|---|
| 0 | 1 |
| 1 | 0 |
# Pasitikrinkite
Kaip manote, kam bus lygios (true / false) tokios sąlygos?
(10 > 9) && (9 > 10) = ???(10 > 9) || (9 > 10) = ???!true = ???(10 > 9) && (!(9 > 10)) = ???
# Kam bus lygus (10 > 9) && (9 > 10) ?
(10 > 9)bustrue, todėl:true && (9 > 10)(9 > 10)busfalse, todėl:true && false- Naudojant operatorių
&&visos sąlygos dalys turi būtitrue, kad visa sąlyga būtųtrue, todėl galutinis rezultatas:false
Apibendrinus: (10 > 9) && (9 > 10) = false
# Kam bus lygus (10 > 9) || (9 > 10) ?
(10 > 9)bustrue, todėl:true || (9 > 10)(9 > 10)busfalse, todėl:true || false- Naudojant operatorių
||bent viena sąlygos dalis turi būtitrue, kad visa sąlyga būtųtrue, todėl galutinis rezultatas:true
Apibendrinus: (10 > 9) || (9 > 10) = true
# Kam bus lygus !true ?
!dalis reiškia priešingą veiksmą, todėl!truekeičiasi į tiesiogfalse
Apibendrinus: !true = false
# Kam bus lygus (10 > 9) && (!(9 > 10)) ?
(10 > 9)bustrue, todėl:true && (!(9 > 10))(9 > 10)busfalse, todėl:true && (!false)(!false)dalis verčiasi į priešingą jai, t. y. įtrue, todėl:true && true- Naudojant operatorių
&&visos sąlygos dalys turi būtitrue, kad visa sąlyga būtųtrue, todėl galutinis rezultatas:true
Apibendrinus: (10 > 9) && (!(9 > 10)) = true
# Pavyzdžiai
# Pavyzdys 1
Kodas:
#include <iostream>
using namespace std;
int main()
{
int skaicius = 14;
if (skaicius > 0 && skaicius <= 100)
{
cout << "Skaicius patenka tarp reziu [1-100]";
}
}
Rezultatai:
Skaicius patenka tarp reziu [1-100]
# Pavyzdys 2
Kodas:
#include <iostream>
using namespace std;
int main()
{
int skaicius;
cout << "Iveskite skaiciu: ";
cin >> skaicius;
if (skaicius > 0 && skaicius <= 100)
{
cout << "Skaicius patenka tarp reziu [1-100]";
}
else
{
cout << "Skaicius nepatenka tarp nurodytu reziu";
}
}
Rezultatas 1:
Iveskite skaiciu: 20
Skaicius patenka tarp reziu [1-100]
Rezultatas 2:
Iveskite skaiciu: 120
Skaicius nepatenka tarp nurodytu reziu
# Pavyzdys 3
Kodas:
#include <iostream>
using namespace std;
int main()
{
int skaicius;
cout << "Iveskite skaiciu: ";
cin >> skaicius;
if (skaicius == 3 || skaicius > 100)
{
cout << "skaicius lygus 3 arba yra didesnis nei 100";
}
}
Rezultatas 1:
Iveskite skaiciu: 25
Rezultatas 2:
Iveskite skaiciu: 5000
skaicius lygus 3 arba yra didesnis nei 100
Rezultatas 3:
Iveskite skaiciu: 3
skaicius lygus 3 arba yra didesnis nei 100
# Pavyzdys 4
Kodas:
#include <iostream>
using namespace std;
int main()
{
int pradzia = 1;
int pabaiga = 100;
int skaicius;
cout << "iveskite skaiciu: ";
cin >> skaicius;
cout << "reziai [" << pradzia << "-" << pabaiga << "]" << endl;
if (skaicius >= pradzia && skaicius <= pabaiga)
{
cout << "skaicius patenka i nurodytus rezius";
}
else
{
cout << "skaicius nepatenka i nurodytus rezius";
}
}
Rezultatas 1:
iveskite skaiciu: -65
reziai [1-100]
skaicius nepatenka i nurodytus rezius
Rezultatas 2:
iveskite skaiciu: 55
reziai [1-100]
skaicius patenka i nurodytus rezius
Rezultatas 3:
iveskite skaiciu: 200
reziai [1-100]
skaicius nepatenka i nurodytus rezius
# Pavyzdys 5
Kodas:
#include <iostream>
using namespace std;
int main()
{
int skaicius;
cout << "iveskite skaiciu: ";
cin >> skaicius;
if (skaicius > 0 && skaicius % 2 == 0)
{
cout << "skaicius yra teigiamas ir lyginis";
}
else if (skaicius > 0 && skaicius % 3 == 0)
{
cout << "skaicius yra teigiamas ir dalinasi is 3";
}
else
{
cout << "skaicius neigiamas arba nesidalina nei is 2 nei is 3";
}
}
Rezultatas 1:
iveskite skaiciu: 8
skaicius yra teigiamas ir lyginis
Rezultatas 2:
iveskite skaiciu: 9
skaicius yra teigiamas ir dalinasi is 3
Rezultatas 3:
iveskite skaiciu: -5
skaicius neigiamas arba nesidalina nei is 2 nei is 3
# Pavyzdys 6
Kodas:
#include <iostream>
using namespace std;
int main()
{
int kaina = 0;
bool nemokama = true;
if (kaina > 0 || nemokama == true)
{
cout << "preke parduodama" << endl;
}
if (kaina > 0 || nemokama)
{
cout << "preke parduodama" << endl;
}
}
Rezultatai:
preke parduodama
preke parduodama
# Pavyzdys 7
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (5 + 3 > 0 || 100 < 100)
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
suveike
# Pavyzdys 8
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (5 + 3 > 0 && 100 < 100)
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
nesuveike
# Pavyzdys 9
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (8 * 2 == 16 && (8 + 9 * 2) % 2 == 0)
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
suveike
# Pavyzdys 10
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (true && false || true)
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
suveike
# Pavyzdys 11
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (false && (false || true))
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
nesuveike
# Pavyzdys 12
Kodas:
#include <iostream>
using namespace std;
int main()
{
bool bilietas = true;
if (!bilietas)
{
cout << "bilieto nera";
}
else
{
cout << "bilietas yra";
}
}
Rezultatai:
bilietas yra
# Pavyzdys 13
Kodas:
#include <iostream>
using namespace std;
int main()
{
if (!(5 + 3 > 0))
{
cout << "suveike";
}
else
{
cout << "nesuveike";
}
}
Rezultatai:
nesuveike
# Pavyzdys 14
Kodas:
#include <iostream>
using namespace std;
int main()
{
int skaicius;
cout << "iveskite skaiciu: ";
cin >> skaicius;
if ((skaicius > 0 && skaicius < 100) || skaicius % 2 == 0)
{
cout << "skaicius patenka i rezius arba dalinasi is 2" << endl;
}
if (skaicius > 0 && (skaicius < 100 || skaicius % 2 == 0))
{
cout << "skaicius teigiamas ir mazesnis uz 100 arba lyginis" << endl;
}
}
Rezultatas 1:
iveskite skaiciu: 55
skaicius patenka i rezius arba dalinasi is 2
skaicius teigiamas ir mazesnis uz 100 arba lyginis
Rezultatas 2:
iveskite skaiciu: -7777
Rezultatas 3:
iveskite skaiciu: 120
skaicius patenka i rezius arba dalinasi is 2
skaicius teigiamas ir mazesnis uz 100 arba lyginis
# Užduotys
# Užduotis 1
Susikurkite du kintamuosius rėžių pradžiai ir pabaigai saugoti. Liepkite vartotojui įvesti skaičių. Patikrinkite ar skaičius patenka į nurodytus rėžius.
# Užduotis 2
Liepkite vartotojui įvesti bet kokį teigiamą skaičių. Patikrinkite ar skaičius yra teigiamas (didesnis už nulį) ir ar yra lyginis (dalinasi iš 2).
# Užduotis 3
Liepkite vartotojui įvesti bet kokį skaičių. Patikrinkite ar skaičius dalinasi iš 2 arba 5 arba 7.
# Užduotis 4
Liepkite vartotojui įvesti tris skaičius. Raskite kuris iš šių skaičių yra didžiausias.
# Užduotis 5
Liepkite vartotojui įvesti tris skaičius. Raskite kuris iš šių skaičių yra mažiausias.
# Užduotis 6
Liepkite vartotojui įvesti trijų egzaminų rezultatus. Suraskite pažymių vidurkį. Atlikite šiuos patikrinimus:
- ar gautas vidurkis yra [8-10];
- ar gautas vidurkis yra [5-8);
- ar gautas vidurkis yra < 5.
# Užduotis 7
Liepkite įvesti du skaičius. Patikrinkite, naudojant 4 atskiras if sąlygas:
- ar pirmas skaičius yra didesnis už antrąjį, arba yra lygus 0;
- ar antras skaičius yra didesnis už pirmąjį, arba yra lygus 5;
- ar pirmas skaičius yra didesnis už antrąjį ir yra lygus 20;
- ar antras skaičius yra didesnis už pirmąjį ir yra mažesnis už 100;