• 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5


Podstawy programowania w C++ - Część 2: Nieco światła w nieznanym
#1
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 Język Nie mam pomysłu na dłuższy wstęp więc do dzieła.

------------------------------------------------------------------------------------------------------

Na poprzedniej lekcji uruchomiliśmy taki oto kod:

Code:
#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 Język. 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:

[Image: 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 Duży uśmiech

-----------------------------------------------------------------------------------------------------------------------------

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ść
Dysk twardy wiadomo służy do tego, aby przechowywać trwale nasze dane, programy, filmy, zdjęcia, muzykę i tak dalej. W naszych programach będziemy uzyskiwali do niego dostęp przy zapisywaniu danych do pliku i odczytywaniu ich.

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:Zdezorientowanytring                    | ł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:



Code:
#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:
Code:
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:
Code:
int variable1 = 5;
int variable2 = variable1;
variable1 = 8;
int variable3 = variable1;
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:
Code:
int variable1 = 5;
int variable2 = variable1 - 3;
int variable3 = variable1 * variable2;
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ę:
Code:
std::cout << "My age: " << myAge << " minus yourAge: " << yourAge << " equals: << ageDifference << std::endl;
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 Język

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 Uśmiech
Pozdrawiam
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od: WrathAmon , LordStachu , Martinez
#2
Ostatnio postawilem sobie wyzwanie nauczenia sie kodu C++ i swietnie to wszystko mi opisales Uśmiech.
Oczywiscie uzywam kursu tego innego Pana, o którym wspomnialem wczesniej ale mówiles, ze on wielu rzeczy dokladnie nie wyjasnia - to sie swietnie sklada bo jak cos nie bede rozumial zawsze moge sie zwrócic do Ciebie.

Swietny przyklad podales mi na male cwiczenie z tym kalkulatorem wiekowym, na bazie tego moge zrobic jakikolwiek inny licznik np. obliczyc moja wyplate po podatku Uśmiech.

Warto by bylo tylko wspomniec jakiego programu komputerowego rekomendujesz do cwiczen w kodzie C++ ja jak na razie uzywam tego:

CODE BLOCKS

Co o tym programie myslisz Axatorze? Moze byc na start czy sugerowalbys inny?

Ogólnie swietny poradnik i bardzo zrozumialy Uśmiech. Cos czuje, ze czesciej bede w tym subforum aktywny Język.

Teraz czekam na dalsze wiadomosci, moze opiszesz jak dzialaja petle albo przedstawisz inne ciekawe cwiczenie na podstawie tego co nam napisales powyzej?

Czekam na wiecej Pomysł Diabeł Pomysł

P.S. Czy jesli wpisze w cudzyslów getChar np "Q" to program zamknie sie tylko przy wcisnieciu owej literki "Q" czy byle jaki klawisz zamknie operacje w Twoim przykladzie? Tak troche nie cierpliwie pytam bo pisze z pracy i pewnie w domu sam bym to sobie sprawdzil ale wole spytac speca bo bedzie szybciej Uśmiech.
Reply }}}
Podziękowanie od: Martinez
#3
Ja polecam visual studio community, warto podczas instalacji zmienić na wersję angielską, bo jak potem będziesz czegoś szukał, to na necie zapewne to znajdziesz ale właśnie w wersji angielskiej.

https://visualstudio.microsoft.com/pl/do...ogle.pl%2F

EDIT: Axator w pierwszym poradniku pisał o tym środowisku.
"Zobaczmy. Nikt mnie nie widzi. Wszystko będzie ujawnione. Cała sala, szuka ciała"
Reply }}}
Podziękowanie od: Martinez
#4
Tak, polecam bardzo gorąco Visual Studio 2017 o czym wspomniał Shadow. Wersja community jest darmowa.

A co do tego „pana” to chodziło o to, ze czasem nagina prawdę i może wprowadzić w błąd. Osoba, która nie jest tego świadoma, może zapamiętać te błędy i potem je powielać.

Jeśli chodzi o pętle i inne możliwości jezyka, to wszyatko się pojawi. Prawdopodobnie w czwartej części, nie mam dokładnie rozplanowanego tego, by nie były to zbyt długie lekcje i jednocześnie wystarczajaco dobrze opisywały temat.
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od: Martinez
#5
A właściwie do czego stosuję się najczęsciej C++ oprócz gier? Bo do do webowych aplikacji to raczej jave albo c hashtaga się używa jeśli już nie na samym node js. Więc zastanawia mnie do czego najczęściej wykorzystuję się w praktyce ten język.
[Image: smiley.gif][Image: sad.gif]
a
[Image: 7XHzOkps.jpg]
Reply }}}
Podziękowanie od:
#6
Do aplikacji webowych też możesz go użyć (do backendu). Możesz robić aplikacje na telefon, zwykłe aplikacje desktopowe.
Czasem jest używany przy programowaniu sprzętu (chociaż język C tutaj dominuje).
Stosuje się go tam, gdzie potrzebna jest duża wydajność (za wydajność płaci się tym, że dłużej taki program powstaje). Dlatego dominuje przy produkcji gier, to są jedne z najbardziej wymagających programów Duży uśmiech

A odpowiadając na Twoje pytanie bury z shoutboxa: "Bakuganie zrobił byś jakieś poradniki o zarządzaniu pamięcią w c++? Bo mówiłeś że to łatwo więc podejrzewam że nie trzeba kombinować gdzie tu destrukor wywołać"
Mogę zrobić, po prostu wydawało mi się, że ten kurs nie ciągnie za sobą żadnego zainteresowania (poza Stachem, ale on ogląda(ł) pana Zelenta na yt)
Ten post był edytowany -259638 raz(y) ostatnio edytowany przez Axator: Za 3 pojutrze, 29:89
Reply }}}
Podziękowanie od:

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  




Users browsing this thread:
1 Guest(s)

Silnik forum - © MyBB - Styl forum - iAndrew, grafika - Kithraya, Midas, Bezifabr, Blizzard Entertainment
   
O NAS
Goblin Factory to założone w grudniu 2013 roku forum moderów Warcraft 3 wspólnym wysiłkiem dwóch osób - Scaraba, i WrathaAmona. Celem ich było stworzenie czegoś na wzór starego arcane.pl - miejsca, w którym osoby które wciąż tworzą coś do Warcrafta mogą się spotkać, porozmawiać, zaprezentować swoje dzieła, zapytać o rozwiązanie różnych problemów itd. 22 czerwca 2014 roku Goblin Factory został przeniesiony na nowy silnik, i nowy hosting, a obecnie jest już największym i najpopularniejszym polskim forum dotyczącym Warcrafta 3.