#include <iostream>
using namespace std;
int main(){
return 0;
}
Dołączenie standardowej biblioteki "iostream" (strumień wejscia, wyjscia)
i - input - wejscie
o - output - wyjscie
stream - strumień
Za pomocą słów kluczowych using namespace informujemy kompilator, że chcemy aby wszystkie funkcje, klasy i szablony należące do przestrzeni nazw nie wymagały przedrostka. Wyraz występujący po tych dwóch słowach kluczowych jest istniejącą nazwą przestrzeni. Dla standardowych bibliotek C++ jest to std.
Funkcja main jest pierwszą funkcją uruchamianą podczas działania programu. Tak będzie zawsze, nawet wówczas, gdy utworzymy kilka innych funkcji. To jaki typ zwraca funkcja, określone jest przed nazwą funkcji. Do zwracania rezultatów funkcji służy instrukcja return. Nasza funkcja main zwracała do tej pory zawsze wartość 0. Jak można łatwo zauważyć, zwracana wartość, czyli 0 jest typu int. Zatem wszystko się zgadza, bowiem przed nazwą funkcji stoi właśnie int, co jak już wiesz, oznacza jaki typ zwraca funkcja.
Funkcja main w rzeczywistości zwraca kod wykonania całego programu. Kod 0 oznacza, że program został wykonany poprawnie, natomiast zwrócenie innej wartości może oznaczać konkretny typ błędu.
Pomiędzy nawiasami klamrowymi w funkcji głównej Main oraz przed instrukcją 'return 0;' piszemy nasz pierwszy program.
Zmienna - to obiekt w programowaniu, który przechowuje różnego rodzaju dane niezbędne do działania programu. Zmienna podczas działania programu może zmieniać swoje wartości (jak wskazuje nazwa). Tworząc zmienną musimy nadać jej nazwę oraz typ, który określa co nasza zmienna będzie przechowywać. Nadając nazwę trzymamy się następujących reguł:
zmienna jest jednym ciągiem znaków bez spacji np. nazwa_zmiennej - dobrze, nazwa zmiennej - źle
nie zaczynamy nazwy od cyfry np. 12zmienna - źle, zmienna12 - dobrze
nie używamy polskich liter takich jak ą, ę itp.
nazwa zmiennej powinna kojarzyć się z przeznaczeniem tej zmiennej np. tablica_ciagu - dobrze
nazwa nie może być słowem kluczowym języka programowania np. auto - źle
Ogólna zasada tworzenia zmiennych jest następująca:
typ_zmiennej nazwa_zmiennej;
np.
int a - zmienna o nazwie "a" mająca typ całkowity int
char b - zmienna o nazwie "b" mająca typ znakowy char.
Typy całkowite przechowują tylko liczby całkowite.
Nazwa | Zakres |
---|---|
short | -2^15 ÷ 2^15 - 1 |
int | -2^31÷ 2^31 - 1 |
long | -2^31÷ 2^31 - 1 |
long long | -2^63÷ 2^63 - 1 |
unsigned short | 0 ÷ 2^16 - 1 |
unsigned int | 0 ÷ 2^32 - 1 |
unsigned long | 0 ÷ 2^32 - 1 |
unsigned long long | 0 ÷ 2^64 - 1 |
short a = 32767;
int b = 2147483647;
long c = 2147483647;
long long d = 9223372036854775807;
unsigned short e = 65535;
unsigned int f = 4294967295;
unsigned long g = 4294967295;
unsigned long long h = 18446744073709551615;
Typy rzeczywiste przechowuje liczby zmiennoprzecinkowe.
Nazwa | Zakres |
---|---|
float | dokładność 6 cyfr po przecinku |
double | dokładność 14 cyfr po przecinku |
long double | dokładność 15 cyfr po przecinku |
float i = 1.123456;
double j = 1.12345678912345;
long double k = 1.123456789123456;
Typ znakowy - przechowuje znaki, które są kodowane kodem ASCII.
Nazwa | Zakres |
---|---|
char | -128 ÷ 127 |
unsigned char | 0 ÷ 255 |
char l = '$';
Typ logiczny - przechowuje jedną z dwóch wartości - true (prawda) albo false (fałsz). Wartość logiczna true jest równa 1, natomiast false ma wartość 0.
Nazwa | Zakres |
---|---|
bool | true (1) |
bool m = true;
bool n = false;
Ciąg znaków - String w C++ jest obiektem, który przechowuje ciąg znaków, umożliwiając łatwe operacje takie jak konkatenacja (łączenie tekstów), porównywanie, a także dostęp do poszczególnych znaków za pomocą indeksów. W przeciwieństwie do klasycznych tablic znaków (char), stringi mogą dynamicznie zmieniać swój rozmiar, co oznacza, że można do nich dodawać teksty bez konieczności deklarowania ich długości z góry.
Przykład:
string tekst = "Witaj w C++";
cout << tekst << endl; // Wyswietli: Witaj w C++
tekst += " - to jest string!";
cout << tekst << endl; // Wyswietli: Witaj w C++ - to jest string!
W tym przykładzie zmienna typu string przechowuje ciąg znaków 'Witaj w C++'. Następnie można dodawać do niej inne teksty i operować na nich w sposób łatwy i intuicyjny.
Biblioteka strumieni wejścia i wyjścia definiuje wyjście dla każdego typu wbudowanego i zdefiniowanego przez użytkownika. Operator << (wyślij do) służy jako operator wyjściowy na obiektach typu ostream; cout to standardowy strumień wyjściowy. Domyślnie wartości wysyłane do cout są konwertowane na sekwencje znaków. Aby na przykład wysłać na wyjście liczbę 10, należy napisać:
#include <iostream>
using namespace std;
int main(){
cout << 10;
return 0;
}
Instrukcja ta spowoduje wyświetlenie w konsoli liczby 10.
Aby wyświetlić wartość tekstową (ciąg znaków) należy umieścić je w cudzysłowach " a żeby wyświetlić tekst i wartość zmiennej musimy przekazać kolejny strumień wyjścia operatorem << i po nim podajemy nazwę zmiennej.
cout << "Liczba: " << a;
#include <iostream>
using namespace std;
int main(){
int a = 10;
cout << "Liczba: " << a;
return 0;
}
Liczba: 10
Obsługa wejścia w bibliotece standardowej jest realizowana przez bibliotekę istream. Operatorem wejścia jest >> , a standardowy strumień wejściowy to cin. Typ prawego argumentu operatora >> określa, jakie dane są przyjmowane i gdzie mają zostać zapisane.
Poniższy program wczytuje liczby wpisane w konsoli (np. 1234) i zapisuje do zmiennej całkowitoliczbowej. Następnie program prosi o wpisanie drugiej wartości liczby zmiennoprzecinkowej np. 12.345 do zmiennej zmiennoprzecinkowej o podwójnej precyzji, która nazywa się d.
#include <iostream>
using namespace std;
int main(){
int i;
cin >> i; // wczytuje liczbe typu int do i
double d;
cin >> d; // wczytuje liczbe typu double do d
return 0;
}
Operator przypisania polega na nadaniu wartości dla zmiennej znajdującej się po lewej stronie, wartości znajdującej się po stronie prawej.
int a = 45; //przypisanie do zmienne "a" liczby 45, od tej chwili zmienna "a" przechowuje ta liczbe
int b = a; //przypisanie do zmiennej "b" wartosci zmiennej "a", od tej chwili zmienna "b" ma taka sama wartosc co zmienna "a".
int c = b * (a - b); //w tym przypadku wykonane zostana operacje po prawej stronie operatora a nastepnie ten wynik zostanie przypisany do zmiennej "c" (czyli 0)
Operatory arytmetyczne służą do wykonywania wszelkiego rodzaju działań na liczbach takich jak:
+ - dodawanie
- - odejmowanie
* - mnożenie
/ - dzielenie całkowite lub rzeczywiste. (jeśli argumentami są liczby całkowite, operator będzie wykonywał dzielenie całkowite, natomiast dla liczb rzeczywistych operator wykona dzielenie rzeczywiste.
% - reszta z dzielenia dwóch liczb całkowitych
int a = 10, b = 3, wynik1;
wynik1 = a / b; //zmienna "wynik1" przechowa wartość 3, ponieważ 10 / 3 = 3 całe (dzielenie całkowite)
wynik1 = a % b; //zmienna "wynik1" w tym przypadku będzie miała nadaną wartość 1, ponieważ
// reszta z dzielenia liczby 10 przez 3 jest równa 1
wynik1 = b% a; //zmienna "wynik1" będzie równa 3, ponieważ tyle wynosi reszta z dzielenia liczby 3 przez 10
float c = 10, d = 3, wynik2;
wynik2 = c / d; //zmienna "wynik2" przechowa wartość 3.333..., ponieważ w tym przypadku zostało wykonane
//dzielenie całkowite
Operatory relacyjne (operatory porównania) stosujemy w sytuacjach, gdzie jest potrzeba porównania dwóch elementów. Najczęściej w instrukcjach warunkowych i iteracyjnych. Wyróżniamy:
< - mniejszy
> - większy
<= - mniejszy równy
>= - większy równy
== - równy
!= - różny
int a = 8, b = 7;
if(a==b){ //sprawdzam czy wartosc zmiennej "a" jest taka sama jak zmiennej "b"
cout<<"a jest równe b"; //ten komunikat sie nie wyswietli, poniewaz "a" nie jest rowne "b"
}
else{
cout<<"a nie jest równe b";
}
Operatory logiczne mają zastosowanie w miejscach, gdzie występują różnego rodzaju warunki - głównie w pętlach i instrukcjach warunkowych. Do operatorów logicznych zaliczamy:
|| - lub logiczne
&& - i logiczne
! - zaprzeczenie
Lub logiczne zwraca prawdę, gdy przynajmniej jeden z warunków jest prawdziwy, w przeciwnym razie zwraca fałsz np.:
int n = 5; int k = 7;
bool warunek = n > 3 || k > 10; // wystarczy, aby jeden warunek był prawdziwy
// (w tym przypadku jest pierwszy) aby zmienna "warunek" otrzymała wartość true
Logiczne i zwraca prawdę w przypadku, gdy wszystkie warunki są prawdziwe, w przeciwnym razie zwraca fałsz np.:
int n = 5; int k = 7;
bool warunek = n > 3 && k > 10;// wystarczy, aby jeden warunek byl falszywy
// (w tym przypadku jest drugi) aby zmienna "warunek" otrzymala wartosc false
Logiczne nie zaprzecza otrzymaną wartość z true na false lub z false na true np.:
int n = 5; int k = 7;
bool warunek = !(n > 3 && k > 10); // wyrazenie w nawiasie ma wartosc false,
// a wiec zmienna "warunek" bedzie miala wartosc true
Częstą operacją w programowaniu jest zwiększenie (inkrementacja) lub zmniejszenie (dekrementacja) wartości zmiennej całkowitej o 1.
++ zwiększenie wartości o 1, np. i++ to jest to samo co i=i+1
-- zmniejszenie wartości o 1, np. i-- to jest to samo co i=i-1
Należy jednak zwrócić uwagę, że operatory te można stosować przed zmienną (preinkrementacja) i po zmiennej (postinkrementacja), tzn. liczba++ lub ++liczba. Podobnie jest z operatorem dekrementacji --. Mimo, że działanie operatora w obu przypadkach jest podobne, to nie jest jednak identyczne!
Preinkrementacja powoduje zwiększenie wartości zmiennej o jeden, ale jej zwiększenie następuje przed wykorzystaniem zmiennej.
Postinkrementacja powoduje zwiększenie wartości zmiennej o jeden, ale jej zwiększenie następuje po wykorzystaniu zmiennej.
Aby to wyjaśnić, muszę Ci zdradzić, że językach programowania prawie każde wyrażenie zwraca jakąś wartość. Np. operacja 5+6 zwraca liczbę 11, i dzięki temu int liczba=5+6; powoduje przypisanie zmiennej liczba wartości 11.
Operatory ++ i -- również zwracają wartość, z tym tylko, że jeśli operator znajduje się przed zmienną, to zwraca wartość zmiennej po zwiększeniu(zmniejszeniu), a jeśli znajduje się po zmiennej, to zwraca wartość zmiennej przed wykonaniem operacji zwiększenia(zmniejszenia). Jednak wartość zmiennej w obu przypadkach będzie taka sama.
Pamiętaj!!! Inkrementacja i dekrementacja działa tylko na zmiennych typu całkowitego.
int c = 1;
c = c + 1; //zwiększenie wartości zmiennej "c" o 1, od tej pory ta zmienna ma wartość 2 - sposób pierwszy
c += 1; //ponowne zwiększenie zmiennej "c" o 1, zmienna ta przyjmuje wartość 3 - drugi sposób inkrementacji
c++; // najkrótszy i najczęstszy sposób inkrementujący zmienną "c". Od tej pory zmienna ta osiąga wartość 4
c--; // i analogicznie dekrementujemy naszą zmienną, a więc zmniejszamy wartość zmiennej o 1.
int a, b;
a = 1;
b = a ++; // w tym przypadku najpierw zostanie przypisana wartość do zmiennej "b", a następnie zwiększona wartość zmiennej "a" o 1, czyli od tej chwili
// " a = 2 " natomiast " b =1 "
a = 1;
b = ++a; // w tym przypadku najpierw zadziała operator inkrementacji, a później przypisania a więc, najpierw zwiększamy "a", a następnie ten wynik przypisujemy do "b",
//z tego wynika, że " a = 2 " i " b = 2 ".
Napisz program, który wyświetli na ekranie tekst 'Witaj w programowaniu w C++!'.
Przykład wyjścia:
Witaj w programowaniu w C++!
Napisz program, który przypisze dwie liczby całkowite do zmiennych, a następnie wyświetli ich sumę, różnicę i iloczyn.
Przykład wyjścia:
Liczba a: 5
Liczba b: 3
Suma: 8
Różnica: 2
Iloczyn: 15
Stwórz program, który wyświetli różne typy danych: int, float, char, oraz bool. Zainicjuj zmienne tymi typami i wyświetl ich wartości.
Przykład wyjścia:
Zmienna całkowita: 10
Zmienna zmiennoprzecinkowa: 3.14
Zmienna znakowa: A
Zmienna logiczna: true
Napisz program, który pobierze od użytkownika jego imię i wiek, a następnie wyświetli wiadomość powitalną.
Przykład wyjścia:
Podaj swoje imię: Jan
Podaj swój wiek: 25
Witaj, Jan! Masz 25 lat.
Stwórz program, który wczyta dwie liczby całkowite od użytkownika i wykona na nich następujące operacje: dodawanie, odejmowanie, mnożenie, dzielenie oraz resztę z dzielenia. Utrwalenie wiedzy na temat operatorów arytmetycznych oraz pracy z liczbami.
Przykład wyjścia:
Podaj pierwszą liczbę: 8
Podaj drugą liczbę: 3
Suma: 11
Różnica: 5
Iloczyn: 24
Iloraz: 2
Reszta z dzielenia: 2
Napisz program, który pobierze dwie liczby od użytkownika, wyświetli ich sumę, a następnie poinformuje użytkownika, czy wynik jest liczbą parzystą czy nieparzystą.
Przykład wyjścia:
Podaj pierwszą liczbę: 10
Podaj drugą liczbę: 15
Suma: 25
Suma jest liczbą nieparzystą.