27.06.2018, 19:47
Czołem,
w tej części nauki programowania w C++ wyjaśnimy sobie kod programu z lekcji pierwszej, a także poznamy inne podstawowe elementy składni. Jeśli będzie pojawiał się kod podczas lekcji, to nie będę wstawiał screenów, tylko w bloku kodu
Nie mam pomysłu na dłuższy wstęp więc do dzieła.
------------------------------------------------------------------------------------------------------
Na poprzedniej lekcji uruchomiliśmy taki oto kod:
Omówmy go żeby każdy wiedział co za co odpowiada:
#include to tak zwana dyrektywa preprocesora (wyjaśnię o co chodzi podczas kolejnych lekcji), tak czy siak powoduje ona dołączenie do naszego kodu jakiegoś innego kodu, napisanego przez nas lub kogoś innego. W tym przypadku jest to iostream, czyli standardowa biblioteka wejścia/wyjścia (o co chodzi z wejściem/wyjściem zaraz wyjaśnię). Owa biblioteka została napisana przez kogoś kiedyś i zawiera przydatną funkcjonalność. Gdybyśmy się uparli, moglibyśmy tą funkcjonalność napisać sami, ale po co skoro już jest gotowe? Dokładnie ta komenda "wkleja" tamten czyiś kod do naszego kodu.
int main() to funkcja główna. W momencie kliknięcia dwukrotnie na jakimś pliku .exe, jego wykonywanie rozpoczyna się właśnie od tej funkcji (tak naprawdę zanim ta funkcja zostanie uruchomiona to są robione też inne rzeczy, jak na przykład przydzielanie zasobów komputera, ale to temat na inną lekcję). Gdy ta funkcja się zakończy, również i cały program zostanie zakończony. Także można powiedzieć, że cały cykl życia programu zawiera się w obrębie tej funkcji. W przyszłości będziemy pisali własne funkcje.
nawiasy klamrowe { } definiują gdzie funkcja main się zaczyna, a gdzie kończy. Także wszystko co zawiera się wewnątrz tych nawiasów klamrowych należy do funkcji main.
std::cout jest to strumień wyjścia. Co to znaczy wyjścia? Wyjściem nazywamy to, co dostajemy od komputera jako użytkownicy. I tak na przykładach wyjściem będzie monitor, bo wyświetla nam obrazy z komputera. Głośniki, bo grają nam muzykę z komputera. Drukarka, bo drukuje nam dokumenty z komputera. Napiszcie w komentarzach jakie przychodzą Wam do głowy urządzenia wejścia
. I tak std::cout przekazuje na wyjście tekst który podaliśmy i wyświetla go na ekranie.
<< to operator, w tym przypadku oznaczający kierunek strumienia. Kierujemy tekst do strumienia, więc strzałki wskazują na strumień std::cout
std::endl to po prostu przejście do nowej linijki. Jeśli za std::endl zrobimy << "kolejny tekst"; to ten "kolejny tekst" pokaże się w nowej linijce:
![[Obrazek: 1qUnsdz.png]](https://i.imgur.com/1qUnsdz.png)
getchar() to funkcja, która oczekuje na wciśnięcie klawisza na klawiaturze. Jeśli jej nie dodamy, to program po wyświetleniu tekstu "Hello World" od razu zakończy swoje działanie i nic nie zobaczymy.
To by było na tyle z omówienia pierwszego programu. Wszelkie wątpliwości piszcie w komentarzach
-----------------------------------------------------------------------------------------------------------------------------
Kolejną rzeczą jaką poznamy są zmienne. Zmienne to nieodłączny element każdego programu. Nawet ten krótki program powyżej także korzysta ze zmiennych, chociaż nie jesteśmy tego świadomi.
Ale czym tak naprawdę są zmienne?
Załóżmy że nasz program umie uzyskać zmierzoną temperaturę z termometrów. Zbiera temperatury co godzinę i na koniec dnia chce wyliczyć średnią temperaturę (od godziny 0:00 do 23:00). Zbierze więc 24 różne wartości i średnią policzyłby według takiego wzoru: śrTemp = (temp0 + temp1 + temp2 + .... + temp23) / 24 <--- liczba przy temp oznacza z której godziny następujący pomiar został odebrany, a 24 to liczba wszystkich pomiarów. Wszyscy powinni znać wzór na średnią. Lecz jak program ma zapamiętać te wszystkie pomiary? Musi je sobie gdzieś zapisać. I tu dochodzimy do zmiennych. Pozwalają one przechowywać różne wartości jakie tylko sobie zamarzymy. Możemy wykonać jakieś skomplikowane obliczenia i zapamiętać je sobie na później, przydają się do pobierania wszelkiego rodzaju danych, ten post który właśnie piszę na pewnym etapie też jest przechowywany w zmiennej (na końcu pewnie trafia do bazy danych). Wasze levele w grach, nazwy postaci, przedmioty w ekwipunku, numery telefonów jakie macie zapisane, amerykańskie kody nuklearne i kij wie co jeszcze. Ich zastosowania nie mają końca.
Ale jak to wygląda od strony komputera?
W poprzedniej części poznaliśmy bity, czyli najmniejsze możliwe jednostki informacji, oraz bajty, składające się z 8 bitów.
Wiemy też, że nasz komputer posiada różne rodzaje pamięci, a mianowicie rejestry procesora, pamięć operacyjna i dysk twardy. Wszystkie różnią się od siebie szybkością i pojemnością. I tak oto:
Pamięć operacyjna, zwana też pamięcią o dostępie bezpośrednim (albo losowym), RAM - random access memory. Kiedy klikamy dwukrotnie na nasz ulubiony plik z końcówką .exe, jego zawartość jest kopiowana z dysku twardego do pamięci operacyjnej. Wszelkie zmienne są również tutaj przechowywane. Zmienne to po prostu jakieś miejsce zarezerwowane w tej pamięci aby przechowywać dane. Jest to zrobione po to, aby program szybciej działał. Z kolei w rejestrach procesora niekoniecznie się zmieści. Jednakże możemy nadal wykorzystać rejestry procesora do własnego użytku, i tak oto dochodzimy do:
Rejestry procesora składają się z pojedynczej komórki pamięci, liczba tych komórek zależy od modelu procesora. Kojarzycie na pewno 32-bitowe procesory oraz 64-bitowe procesory. To właśnie od tej "bitowości" zależy liczba tych komórek. Większość rejestrów ma ściśle określone znaczenie i zadania do wykonania i nie możemy z nich korzystać. Korzysta z nich sam procesor oraz system z którego korzystamy. Mimo to możemy czasem skorzystać z tych rejestrów, jako że mają one błyskawiczny czas dostępu do danych. Rejestry są idealne do przechowywania małych i często używanych danych. W późniejszych etapach nauczymy się wykorzystywać te rejestry.
Skoro już wiemy czym są zmienne, to zobaczmy co możemy w nich przechować. Wyróżniamy kilka typów zmiennych, czyli jakoby określenia co dana zmienna przechowuje. Na początek poznajmy kilka podstawowych typów zmiennych:
nazwa typu zmiennej | opis
----------------------------------------------------------------------------------------------------------------------------------------
int | skrót od integer, czyli liczba całkowita dodatnia lub ujemna, na przykład 1000
float | liczba rzeczywista, czyli taka która zawiera wartości po przecinku, na przykład 3.14
bool | wartość logiczna, przechowuje prawdę lub fałsz (tutaj można się wrócić do bitów i znaleźć powiązanie), na przykład 0 lub 1
char | pojedynczy znak zapisany za pomocą kodu ASCII (ASCII wyjaśnię poniżej), na przykład 'a', '0', '/'
std::string | łańcuch znaków (tekst) [co poniektórzy bardziej obeznani w temacie mogliby mnie zlinczować za podanie tutaj string'a, ale nie przekonacie mnie abym go wyrzucił z tej listy]
Możemy teraz napisać prosty program z wykorzystaniem nowo poznanego elementu języka:
int to typ zmiennej, myAge to nazwa zmiennej, a 20 to wartość zmiennej.
Jak widać, możemy wykonywać operacje na zmiennych, dodawanie, odejmowanie, mnożenie, dzielenie.
Więcej wyjaśnienia mogą wymagać jeszcze te dwie linijki:
W pierwszej linijce występuje tak zwana operacja przypisania:
Na tym przykładowym kawałku kodu może będzie to lepiej widać. Po jego wykonaniu, zmienne będą miały takie wartości:
variable1 = 8
variable2 = 5
variable3 = 8
variable1 = 8; <---- do variable1 przypisujemy liczbę 8
variable3 = variable1; <---- do variable3 przypisujemy wartość variable1
Podobnie możemy zrobić na przykład takie operacje:
I wtedy zmienne przyjmą takie wartości:
variable1 = 5
variable2 = 2 (bo 5 - 3)
variable3 = 10 (bo 5 * 2)
Teraz wyjaśnię tą długą linijkę:
Każde wystąpienie zmiennej zostanie zastąpione wartością jaka w niej się znajduje i wyświetlona na ekranie w takiej kolejności jaka jest podana. Tyle tajemnicy 
Ze zmiennych będziemy korzystali zawsze i wszędzie. Warto dobrze je zrozumieć, bez nich dalsza nauka nie będzie miała sensu.
Dużo tekstu, mało treści niestety. Poradników zapewne będzie bardzo dużo żeby zrozumieć wszystkie tematy.
Komentujcie i lajkujcie, dajcie znać czy cokolwiek jest zrozumiałe
Pozdrawiam
w tej części nauki programowania w C++ wyjaśnimy sobie kod programu z lekcji pierwszej, a także poznamy inne podstawowe elementy składni. Jeśli będzie pojawiał się kod podczas lekcji, to nie będę wstawiał screenów, tylko w bloku kodu

------------------------------------------------------------------------------------------------------
Na poprzedniej lekcji uruchomiliśmy taki oto kod:
Kod:
#include <iostream>
int main()
{
std::cout << "Hello World" << std::endl;
getchar();
}
Omówmy go żeby każdy wiedział co za co odpowiada:
#include to tak zwana dyrektywa preprocesora (wyjaśnię o co chodzi podczas kolejnych lekcji), tak czy siak powoduje ona dołączenie do naszego kodu jakiegoś innego kodu, napisanego przez nas lub kogoś innego. W tym przypadku jest to iostream, czyli standardowa biblioteka wejścia/wyjścia (o co chodzi z wejściem/wyjściem zaraz wyjaśnię). Owa biblioteka została napisana przez kogoś kiedyś i zawiera przydatną funkcjonalność. Gdybyśmy się uparli, moglibyśmy tą funkcjonalność napisać sami, ale po co skoro już jest gotowe? Dokładnie ta komenda "wkleja" tamten czyiś kod do naszego kodu.
int main() to funkcja główna. W momencie kliknięcia dwukrotnie na jakimś pliku .exe, jego wykonywanie rozpoczyna się właśnie od tej funkcji (tak naprawdę zanim ta funkcja zostanie uruchomiona to są robione też inne rzeczy, jak na przykład przydzielanie zasobów komputera, ale to temat na inną lekcję). Gdy ta funkcja się zakończy, również i cały program zostanie zakończony. Także można powiedzieć, że cały cykl życia programu zawiera się w obrębie tej funkcji. W przyszłości będziemy pisali własne funkcje.
nawiasy klamrowe { } definiują gdzie funkcja main się zaczyna, a gdzie kończy. Także wszystko co zawiera się wewnątrz tych nawiasów klamrowych należy do funkcji main.
std::cout jest to strumień wyjścia. Co to znaczy wyjścia? Wyjściem nazywamy to, co dostajemy od komputera jako użytkownicy. I tak na przykładach wyjściem będzie monitor, bo wyświetla nam obrazy z komputera. Głośniki, bo grają nam muzykę z komputera. Drukarka, bo drukuje nam dokumenty z komputera. Napiszcie w komentarzach jakie przychodzą Wam do głowy urządzenia wejścia

<< to operator, w tym przypadku oznaczający kierunek strumienia. Kierujemy tekst do strumienia, więc strzałki wskazują na strumień std::cout
std::endl to po prostu przejście do nowej linijki. Jeśli za std::endl zrobimy << "kolejny tekst"; to ten "kolejny tekst" pokaże się w nowej linijce:
![[Obrazek: 1qUnsdz.png]](https://i.imgur.com/1qUnsdz.png)
getchar() to funkcja, która oczekuje na wciśnięcie klawisza na klawiaturze. Jeśli jej nie dodamy, to program po wyświetleniu tekstu "Hello World" od razu zakończy swoje działanie i nic nie zobaczymy.
To by było na tyle z omówienia pierwszego programu. Wszelkie wątpliwości piszcie w komentarzach

-----------------------------------------------------------------------------------------------------------------------------
Kolejną rzeczą jaką poznamy są zmienne. Zmienne to nieodłączny element każdego programu. Nawet ten krótki program powyżej także korzysta ze zmiennych, chociaż nie jesteśmy tego świadomi.
Ale czym tak naprawdę są zmienne?
Załóżmy że nasz program umie uzyskać zmierzoną temperaturę z termometrów. Zbiera temperatury co godzinę i na koniec dnia chce wyliczyć średnią temperaturę (od godziny 0:00 do 23:00). Zbierze więc 24 różne wartości i średnią policzyłby według takiego wzoru: śrTemp = (temp0 + temp1 + temp2 + .... + temp23) / 24 <--- liczba przy temp oznacza z której godziny następujący pomiar został odebrany, a 24 to liczba wszystkich pomiarów. Wszyscy powinni znać wzór na średnią. Lecz jak program ma zapamiętać te wszystkie pomiary? Musi je sobie gdzieś zapisać. I tu dochodzimy do zmiennych. Pozwalają one przechowywać różne wartości jakie tylko sobie zamarzymy. Możemy wykonać jakieś skomplikowane obliczenia i zapamiętać je sobie na później, przydają się do pobierania wszelkiego rodzaju danych, ten post który właśnie piszę na pewnym etapie też jest przechowywany w zmiennej (na końcu pewnie trafia do bazy danych). Wasze levele w grach, nazwy postaci, przedmioty w ekwipunku, numery telefonów jakie macie zapisane, amerykańskie kody nuklearne i kij wie co jeszcze. Ich zastosowania nie mają końca.
Ale jak to wygląda od strony komputera?
W poprzedniej części poznaliśmy bity, czyli najmniejsze możliwe jednostki informacji, oraz bajty, składające się z 8 bitów.
Wiemy też, że nasz komputer posiada różne rodzaje pamięci, a mianowicie rejestry procesora, pamięć operacyjna i dysk twardy. Wszystkie różnią się od siebie szybkością i pojemnością. I tak oto:
- rejestry procesora: duża szybkość, mała pojemność
- pamięć operacyjna: średnia szybkość, średnia pojemność
- dysk twardy: mała szybkość, duża pojemność
Pamięć operacyjna, zwana też pamięcią o dostępie bezpośrednim (albo losowym), RAM - random access memory. Kiedy klikamy dwukrotnie na nasz ulubiony plik z końcówką .exe, jego zawartość jest kopiowana z dysku twardego do pamięci operacyjnej. Wszelkie zmienne są również tutaj przechowywane. Zmienne to po prostu jakieś miejsce zarezerwowane w tej pamięci aby przechowywać dane. Jest to zrobione po to, aby program szybciej działał. Z kolei w rejestrach procesora niekoniecznie się zmieści. Jednakże możemy nadal wykorzystać rejestry procesora do własnego użytku, i tak oto dochodzimy do:
Rejestry procesora składają się z pojedynczej komórki pamięci, liczba tych komórek zależy od modelu procesora. Kojarzycie na pewno 32-bitowe procesory oraz 64-bitowe procesory. To właśnie od tej "bitowości" zależy liczba tych komórek. Większość rejestrów ma ściśle określone znaczenie i zadania do wykonania i nie możemy z nich korzystać. Korzysta z nich sam procesor oraz system z którego korzystamy. Mimo to możemy czasem skorzystać z tych rejestrów, jako że mają one błyskawiczny czas dostępu do danych. Rejestry są idealne do przechowywania małych i często używanych danych. W późniejszych etapach nauczymy się wykorzystywać te rejestry.
Skoro już wiemy czym są zmienne, to zobaczmy co możemy w nich przechować. Wyróżniamy kilka typów zmiennych, czyli jakoby określenia co dana zmienna przechowuje. Na początek poznajmy kilka podstawowych typów zmiennych:
nazwa typu zmiennej | opis
----------------------------------------------------------------------------------------------------------------------------------------
int | skrót od integer, czyli liczba całkowita dodatnia lub ujemna, na przykład 1000
float | liczba rzeczywista, czyli taka która zawiera wartości po przecinku, na przykład 3.14
bool | wartość logiczna, przechowuje prawdę lub fałsz (tutaj można się wrócić do bitów i znaleźć powiązanie), na przykład 0 lub 1
char | pojedynczy znak zapisany za pomocą kodu ASCII (ASCII wyjaśnię poniżej), na przykład 'a', '0', '/'
std::string | łańcuch znaków (tekst) [co poniektórzy bardziej obeznani w temacie mogliby mnie zlinczować za podanie tutaj string'a, ale nie przekonacie mnie abym go wyrzucił z tej listy]
Możemy teraz napisać prosty program z wykorzystaniem nowo poznanego elementu języka:
Kod:
#include <iostream>
int main()
{
int myAge = 20;
int yourAge = 15;
int ageDifference = myAge - yourAge;
std::cout << "My age: " << myAge << " minus yourAge: " << yourAge << " equals: << ageDifference << std::endl;
getchar();
}
int to typ zmiennej, myAge to nazwa zmiennej, a 20 to wartość zmiennej.
Jak widać, możemy wykonywać operacje na zmiennych, dodawanie, odejmowanie, mnożenie, dzielenie.
Więcej wyjaśnienia mogą wymagać jeszcze te dwie linijki:
Kod:
int ageDifference = myAge - yourAge;
std::cout << "My age: " << myAge << " minus yourAge: " << yourAge << " equals: << ageDifference << std::endl;
W pierwszej linijce występuje tak zwana operacja przypisania:
Kod:
int variable1 = 5;
int variable2 = variable1;
variable1 = 8;
int variable3 = variable1;
variable1 = 8
variable2 = 5
variable3 = 8
variable1 = 8; <---- do variable1 przypisujemy liczbę 8
variable3 = variable1; <---- do variable3 przypisujemy wartość variable1
Podobnie możemy zrobić na przykład takie operacje:
Kod:
int variable1 = 5;
int variable2 = variable1 - 3;
int variable3 = variable1 * variable2;
variable1 = 5
variable2 = 2 (bo 5 - 3)
variable3 = 10 (bo 5 * 2)
Teraz wyjaśnię tą długą linijkę:
Kod:
std::cout << "My age: " << myAge << " minus yourAge: " << yourAge << " equals: << ageDifference << std::endl;

Ze zmiennych będziemy korzystali zawsze i wszędzie. Warto dobrze je zrozumieć, bez nich dalsza nauka nie będzie miała sensu.
Dużo tekstu, mało treści niestety. Poradników zapewne będzie bardzo dużo żeby zrozumieć wszystkie tematy.
Komentujcie i lajkujcie, dajcie znać czy cokolwiek jest zrozumiałe

Pozdrawiam