Konstrukcija if else, boola loģika un loģiskie operatori
Šīs nodaļas ietvarā runāsim par to, kā pie konkrētiem nosacījumiem veikt darbības jeb pieņemt lēmumus. Piemēram, lai uzzinātu, vai programmas lietotājs ir ievadījis pāra vai nepāra skaitli. Algoritms varētu rīkoties sekojoši:
- Ielasīt skaitli A.
- Ja A % 2 == 0. *(Pārbaude vai atlikums A dalot ar 2 ir 0)
- Izvada "Pāra".
- Citādi izvada "Nepara".
Analizēsim algoritma soļus. Skaitļa ielasīšana tika apskatīta iepriekšējās nodaļās. Tālāk nākamajos divos soļos seko šāda konstrukcija "ja
#include <iostream>
using namespace std;
int main()
{
int sk;
cin >> sk; // Ielasām skaitli.
if (sk % 2 == 0) // Šī ir if daļa no if-then-else.
{
// then daļa no if-then-else. Izvadīt "Para".
cout << "Para" << endl;
}
else
{
// Else daļa no if-then-else. Izvadīt "Nepara".
cout << "Nepara" << endl;
}
return 0;
}
{} iekavas then un else daļā var apzīmēt vairākas koda rindas, gluži kā main() koda rindas ieliktas {} iekavās.
Boola loģika un loģiskie operatori
Kā rakstīt if-then-else konstrukcijas if daļas nosacījumus. Kā pateikt datoram, lai pie kaut kādiem nosacījumiem tas veic komandas A un pie citiem nosacījumiem komandas B? Kā definēt šos likumus? Sākumā apskatīsim, kā likumi izskatās cilvēku valodā konkrētam algoritmam, kurš nosaka, vai skaitlis ir pāra un lielāks par 100 vai skaitlis ir nepāra un mazāks par 100:
- Ielasīt skaitli.
- Ja skaitlis ir pāra un lielāks par 100 vai skaitlis nepāra un mazāks par 100.
- Tad izvadīt vārdu "Derigs".
- Citādi izvadīt vārdu "Nederigs".
Šī algoritma if-then-else nosacījumi ir sekojoši:
- skaitlis ir pāra;
- skaitlis ir lielāks par 100;
- skaitlis ir nepāra;
- skaitlis ir mazāks par 100.
Var novērot, ka, apskatot kādu konkrētu skaitli, uz katru šo likumu var atbildēt ar jā vai nē. Iepriekš apskatījām tipu bool, kura mainīgie saturēja vērtības true vai false, kas ir tas pats jā vai nē.
Likumus savā starpā saista un, vai operatori. Tos sauc par loģiskajiem operatoriem un C++ tie pierakstās ar && (un jeb and), || (vai jeb or). Šie divi loģiskie operatori var saņemt divus likumus, kā operandus un atgriezt vērtību atkarībā no operandu vērtībām. Šos un dažus citus loģiskos operatorus var apskatīt 1. tabulā.
&& (and) | true | false | || (or) | true | false | ! (not) | |||
---|---|---|---|---|---|---|---|---|---|
true | true | false | true | true | true | true | false | ||
false | false | false | false | true | false | false | true |
#include <iostream>
using namespace std;
int main()
{
int sk;
cin >> sk;
if ((sk % 2 == 0 && sk > 100) || (sk % 2 != 0 && sk < 100)) // Šādi izskatās algoritmā minētais nosacījums if daļā.
{
cout << "Derigs" << endl;
} else {
cout << "Nederigs" << endl;
}
return 0;
}