Operacje na zmiennych
W tej lekcji nauczysz się wykonywać różne operacje z użyciem zmiennych. Będziemy:
- Zapisywać do nich wartości,
- Modyfikować je z użyciem wyrażeń matematycznych,
- Wyświetlać ich zawartość w konsoli.
Dowiesz się też jak pozwolić użytkownikowi na prostą interakcję z programem.
Interakcja z użytkownikiem
Nasze programy będą nieco ciekawsze, gdy pozwolimy użytkownikowi wpisać coś do konsoli.
Zrobimy to za pomocą instrukcji cin
(ang: character input):
#include <iostream>
int main()
{
std::cout << "Podaj swój wiek: ";
int age;
std::cin >> age;
std::cout << "Masz " << age << "lat.\n";
}
cin
pozwala nam zapisać zawartość tzw. standardowego wejścia (stdin)
do zmiennej, którą podajemy po znakach >>
.
Umożliwia to zapisanie wartości, którą użytkownik wpisze w konsoli do zmiennej.
Zwróć uwagę, że:
cout
używa operatora<<
cin
używa operatora>>
Oprócz tego, możesz zobaczyć, że nie przypisaliśmy zmiennej age
wartości początkowej.
Nie jest to potrzebne, bo od razu po jej stworzeniu, używamy std::cin
aby zapisać
do niej wartość taką, jaką użytkownik wpisze z klawiatury.
Możesz zapamiętać kierunek znaczków w tym operatorze w prosty sposób
cout
- tekst idzie do konsoli -<<
skierowane w stronecout
cin
- tekst idzie do zmiennej ->>
skierowane w stronę zmiennej
Działania matematyczne
Zmienne, które zawierają liczby można dowolnie modyfikować za pomocą typowych znaków (operatorów) matematycznych:
Operacja | Znaczenie | |
---|---|---|
pub | a + b | Dodaje a i b |
pub | a - b | Odejmuje b od a |
pub | a * b | Mnoży a i b |
pub | a / b | Dzieli a przez b |
pub | a % b | Reszta z dzielenia a przez b |
To nie są wszystkie operatory matematyczne, o reszcie powiemy kiedy indziej.
Symbol ^
nie oznacza potęgowania!
Wykorzystajmy te operatory w praktyce:
#include <iostream>
int main()
{
std::cout << "Podaj swój wiek: ";
int age;
std::cin >> age;
std::cout << "Za 10 lat, będziesz mieć: " << (age + 10) << " lat\n";
std::cout << "5 lat temu, miałeś/aś: " << (age - 5) << " lat\n";
std::cout << "Jak będziesz 2x starszy/a, będziesz mieć: " << (age * 2) << " lat\n";
std::cout << "Ktoś dwa razy młodszy ma :" << (age / 2) << " lat\n";
std::cout << (age % 10) << " lat temu Twój wiek był podzielny przez 10";
}
Zwróć uwagę, że dla kompilatora nie ma znaczenia czy użyjemy jednej spacji, czy wyrównamy kod
z użyciem klawisza Tab
.
Bardzo istotnym faktem jest to, że użycie wyżej wymienionych operatorów,
nie zmienia zawartości zmiennej age
.
Wpisując wiek 20
, uzyskamy następujący wynik:
Za 10 lat, będziesz mieć: 30 lat
5 lat temu, miałeś/aś: 15 lat
Jak będziesz 2x starszy/a, będziesz mieć: 40 lat
Ktoś dwa razy młodszy ma: 10 lat
0 lat temu Twój wiek był podzielny przez 10
(age: 20 => + 10 = 30)
(age: 20 => - 5 = 30)
(age: 20 => * 2 = 40)
(age: 20 => / 2 = 10)
(age: 20 => % 10 = 0)
Jak widzimy, na każdym etapie wartość zmiennej age
pozostała ta sama (20
).
Dzieje się tak dlatego, że w zapisie:
a + b
to samo wyrażenie a + b
ma pewną wartość, a zawartość zmiennych zostaje nietknięta.
Zmiana wartości zmiennych
Często będziemy chcieli zmienić wartość zmiennej, nadając jej nową.
Możesz po prostu użyć operatora przypisania =
ponownie na zmiennej, aby nadać jej nową wartość.
W poniższym przykładzie, zmienna age
jest początkowo tworzona z wartością 20
.
Następnie, przypisujemy do niej nową wartość 37
.
int age = 20;
age = 37;
Jeśli np. chcemy zwiększyć zmienną o 10
, to musimy przypisać wynik
wyrażenia dodawania w taki sposób:
age = age + 10;
Z uwagi na to, że wykorzystywanie operatora na tej samej zmiennej jest częstą operacją, C++ udostępnia skrócony zapis:
age += 10;
Zobacz jak to działa na przykładzie:
#include <iostream>
int main()
{
std::cout << "Podaj swój wiek: ";
int age;
std::cin >> age;
std::cout << "Teraz masz: " << age << " lat\n";
age += 30;
std::cout << "Za 30 lat, będziesz mieć: " << age << " lat";
}
Teraz masz: 20 lat
Za 30 lat, będziesz mieć: 50 lat
Przeanalizujmy w koljne kroki, jakie wykonał ten program. Rozważmy zmienną age
:
- Linia
7
definiuje zmienną o nazwieage
typuint
bez wartości początkowej. - Kiedy linia
8
jest wykonywana, program czeka w tym miejscu aż użytkownik wpisze coś i naciśnieEnter
.- Po otrzymaniu danych wejściowych,
std::cin
umieszcza odczytaną wartość wage
. Ponieważ wpisaliśmy20
,age
ma teraz wartość20
.
- Po otrzymaniu danych wejściowych,
- Kiedy linia
10
jest wykonywana,std::cout
wypisuje wartośćage
, która nadal wynosi 20. - Linia
11
zmienia wartość zmiennej na wynik20 + 30
, czyli50
.age
ma teraz wartość50
. - W końcu, linia
12
jest wykonywana, wyświetlając wartość50
.
Oprócz operatora +=
przedstawionego powyżej, dostępnych jest wiele innych operatorów
które modyfikują zawartość zmiennych; oto najczęściej spotykane z nich:
Shorthand Operator | Equivalent To | |
---|---|---|
pub | a += b | a = a + b |
pub | a -= b | a = a - b |
pub | a *= b | a = a * b |
pub | a /= b | a = a / b |
Prezentacja pokazująca działanie tych operatorów w akcji:
- 🖼 Prezentacja
- Kod
Poniżej prezentacja działania programu, po wpisaniu liczby 20
.
#include <iostream>
int main()
{
std::cout << "Podaj jakąś liczbę: ";
int number;
std::cin >> number;
// Zwiększ "number" o 5 i przypisz:
number += 5;
std::cout << "Po zwiększeniu o 5: " << number << '\n';
// Zmniejsz "number" o 10 i przypisz:
number -= 10;
std::cout << "Następnie, po zmniejszeniu o 10: " << number << '\n';
// Pomnóz trzykrotnie i przypisz:
number *= 3;
std::cout << "Następnie, po pomnożeniu razy 3: " << number << '\n';
// Podziel na 2 i przypisz:
number /= 2;
std::cout << "Następnie, po podzieleniu przez 2: " << number << '\n';
// Zwiększ wartość o 1 (inkrementacja):
number++;
std::cout << "Następnie, po zinkrementowaniu: " << number << '\n';
// Zmniejsz wartość o 1 (dekrementacja):
number--;
std::cout << "Następnie, po zdekrementowaniu: " << number << '\n';
}
Więcej o możliwościach zmiennych dowiesz się z następnych części kursu.