C++ #5 – Operatory i instrukcje warunkowe

Lis 01
2010

Operatory składają się z jednego, bądź kilku znaków i jak sama nazwa wskazuje pozwalają operować na zmiennych, a mianowicie wykonywać na nich działania arytmetyczne,porównującelogiczneprzypisujące o raz kilka innych.

 

 

Operatory i instrukcje warunkowe

Do operatorów arytmetycznych zaliczamy
odejmowanie 
dodawanie +
mnożenia *
dzielenie /
modulo % (reszta z dzielenia)

W pierwszym przykładzie wykorzystamy operator arytmetyczny odejmowania , aby odjąć od siebie dwie liczby.

#include <iostream>
using namespace std;
int data = 1993;
int rok = 2009;
 
int main()
{
	cout<<"Mam "<<rok-data<<" latek"<<endl;
	return 0;
}

komeniusz@cyber-jadro:~/Pulpit$ g++ pierwszy.cpp -o program
komeniusz@cyber-jadro:~/Pulpit$ ./program
Mam 16 latek
komeniusz@cyber-jadro:~/Pulpit$

Kod ten można zapisać bardziej profesjonalnie i czytelnie używając operatora przypisania =, którego poznaliśmy już nieco wcześniej w inny sposób.

#include <iostream>
using namespace std;
int data = 1993;
int rok = 2009;
int wiek = rok-data;
 
int main()
{
	cout<<"Mam "<<wiek<<" latek"<<endl;
	return 0;
}

Wynik będzie identyczny, lecz do wypisania wyniku używamy jednej zmiennej, która przechowuje różnicę daty urodzenia oraz roku obecnego.

Reszty operatorów arytmetycznych używa się identycznie, aby je lepiej zrozumieć można wykonać kilka dodatkowych ćwiczeń.

Dzielenie modulo % może wydawać się niejasne, więc przyjrzyjmy się jednemu przykładowi.

#include <iostream>
using namespace std;
int liczba1 = 24;
int liczba2 = 5;
int wynik = liczba1%liczba2;
 
int main()
{
	cout<<"Reszta z dzielenia liczby "<<liczba1<<" i liczby "<<liczba2<<" wynosi: "<<wynik<<endl;
	return 0;
}

komeniusz@cyber-jadro:~/Pulpit$ g++ pierwszy.cpp -o program
komeniusz@cyber-jadro:~/Pulpit$ ./program
Reszta z dzielenia liczby 24 i liczby 5 wynosi: 4
komeniusz@cyber-jadro:~/Pulpit$

Dlaczego wynikiem jest liczba 4? Otóż 4*5 = 20, a 4*6 to już 25. Więc reszta z dzielenia liczby 24 przez 5 to 4.

Pozostało zapoznać się z zasadą działania operatora porównującego i logicznego, lecz aby to uczynić powinniśmy dowiedzieć się czym, jest instrukcja warunkowa.

Instrukcja warunkowa składa się z wyrażenia warunkowego i instrukcji do wykonania. W C++ są dwie instrukcje warunkowe – if…else

if(wyrażenie warunkowe) {
instrukcja do wykonania
} else if(inne wyrażenie warunkowe) {
Inna instrukcja do wykonania
} else {
Jeszcze inna instrukcja do wykonania
}

Oraz switch.

switch(wyrażenie warunkowe) {
case „wartość”:
Instrukcje
break;

case „inna wartość”:
Inne instrukcje
break

default:
Jeszcze inne instrukcje
}

Wykorzystajmy pierwszą z nich w celu sprawdzenia, czy dana liczba jest większa od zera.

#include <iostream>
using namespace std;
int liczba = 34;
 
int main()
{
	if(liczba > 0) {
		cout<<"Liczba jest większa od zera"<<endl;
	} else if(liczba < 0) {
		cout<<"Liczba jest mniejsza od zera"<<endl;
	} else {
		cout<<"Liczba jest równa zeru"<<endl;
	}
	return 0;
}

komeniusz@cyber-jadro:~/Pulpit$ g++ pierwszy.cpp -o program
komeniusz@cyber-jadro:~/Pulpit$ ./program
Liczba jest większa od zera
komeniusz@cyber-jadro:~/Pulpit$

Owe otwarcie i zamknięcie nawiasu kwadratowego (><) to operator porównujący. Ma on za zadanie porównywać wartości zmiennych. Są także inne tego typu operatory
> zwraca true, jeśli argument lewostronny jest większy od prawostronnego
< zwraca true, jeśli argument lewostronny jest mniejszy od prawostronnego
>= zwraca true, gdy argument lewostronny jest większy od prawostronnego lub równy mu
<= zwraca true, gdy argument prawostronny jest większy od prawostronnego lub równy mu
== zwraca true, gdy oba argumenty są sobie równe
!= zwraca true, kiedy oba argumenty są sobie nierówne

Ostatnim zbiorem operatorów, jakie poznamy to operatory logiczne.
&& iloczyn logiczny (AND), zwraca true, gdy operator porównujący po lewej i prawej stronie zwróci true
|| suma logiczny (OR), zwraca true, gdy operator porównujący po lewej lub prawej stronie zwróci true
! negacja logiczna (NOT), zmienia ona zwracaną wartość przez funkcję true na false, a false na true. Jest to zaprzeczenie.

Przekształćmy poprzedni przykład na taki, który porównuje dwie zmienne w celu zweryfikowania czy wartości są liczbami dodatnimi.

#include <iostream>
using namespace std;
int liczba = 34;
int liczba2 = -15;
 
int main()
{
	if(liczba > 0 && liczba2 > 0) {
		cout<<"Obie liczby są większe od zera"<<endl;
	} else if(liczba < 0 && liczba2 < 0) {
		cout<<"Obie liczby są mniejsze od zera"<<endl;
	} else if(liczba > 0 && liczba2 < 0) {
		cout<<"Liczba pierwsza jest dodatnia, a druga ujemna"<<endl;
	} else if(liczba < 0 && liczba2 > 0) {
		cout<<"Liczba pierwsza jest ujemna, a druga dodatnia"<<endl;
	} else {
		cout<<"Jedna, bądź dwie liczby to zero"<<endl;
	}
	return 0;
}

komeniusz@cyber-jadro:~/Pulpit$ g++ pierwszy.cpp -o program
komeniusz@cyber-jadro:~/Pulpit$ ./program
Liczba pierwsza jest dodatnia, a druga ujemna
komeniusz@cyber-jadro:~/Pulpit$

Instrukcja warunkowa switch ma nieco inne działanie. Jej zadaniem jest porównywać wartości w następujący sposób.

#include <iostream>
using namespace std;
 
int main() {
int zmienna;
 
cout<<"Wybierz opcje od 1 do 3"<<endl;
cin>>zmienna;
 
switch(zmienna) {
	case 1:
		cout<<"Wybrano 1"<<endl;
	break;
 
	case 2:
		cout<<"Wybrano 2"<<endl;
	break;
 
	case 3:
		cout<<"Wybrano 3"<<endl;
	break;
 
	default:
		cout<<"Nieprawidłowy wybór"<<endl;
}
 
cout<<endl;
return 0;
}

komeniusz@cyber-jadro:~/Pulpit$ g++ pierwszy.cpp -o program
komeniusz@cyber-jadro:~/Pulpit$ ./program
Wybierz opcje od 1 do 3
2
Wybrano 2

Owy magiczny cin>> w kodzie służy do wprowadzania danych.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *