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:
coutużywa operatora<<cinuż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 stronecoutcin- 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
7definiuje zmienną o nazwieagetypuintbez wartości początkowej. - Kiedy linia
8jest wykonywana, program czeka w tym miejscu aż użytkownik wpisze coś i naciśnieEnter.- Po otrzymaniu danych wejściowych,
std::cinumieszcza odczytaną wartość wage. Ponieważ wpisaliśmy20,agema teraz wartość20.
- Po otrzymaniu danych wejściowych,
- Kiedy linia
10jest wykonywana,std::coutwypisuje wartośćage, która nadal wynosi 20. - Linia
11zmienia wartość zmiennej na wynik20 + 30, czyli50.agema teraz wartość50. - W końcu, linia
12jest 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.