Co nowego?
  • logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

-Łatwy C++ po mojemu

Grimekk

memsoria.pl
Dołączył
Październik 9, 2011
Posty
609
Liczba reakcji
55
Wst?p​
Cze??. Surfuj?c po forum zauwa?y?em bardzo ma?o informacji/poradnik?w/kod?w zwi?zanych z C++. Postanowi?em zatem, ?e rozpoczn? kr?tk? seri? dla pocz?tkuj?cych. Wydaj? mi si?, ?e moja wiedza dotycz?ca cpp b?dzie wystarczaj?co du?a aby wyt?umaczy? wam tajniki tego j?zyka. M?wi? od razu, ?e wkurwienie jest nieroz??czn? cz??ci? ?ycia programisty, wi?c przyzwyczajcie si?, ?e b?dziecie par? godzin poprawia? b??dy w jednym kodzie.
Dla niewtajemniczonych, czym jest C++:
Wikipedia napisał:
C++ – j?zyk programowania og?lnego przeznaczenia.
Umo?liwia abstrakcj? danych oraz stosowanie kilku paradygmat?w programowania: proceduralnego, obiektowego i generycznego. Charakteryzuje si? wysok? wydajno?ci? kodu wynikowego, bezpo?rednim dost?pem do zasob?w sprz?towych i funkcji systemowych, ?atwo?ci? tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych j?zykach), niezale?no?ci? od konkretnej platformy sprz?towej lub systemowej (co gwarantuje wysok? przeno?no?? kod?w ?r?d?owych) oraz niewielkim ?rodowiskiem uruchomieniowym. Podstawowym obszarem jego zastosowa? s? aplikacje i systemy operacyjne.
C++ zosta? zaprojektowany przez Bjarne Stroustrupa jako rozszerzenie j?zyka C o obiektowe mechanizmy abstrakcji danych i siln? statyczn? kontrol? typ?w. Zachowanie zgodno?ci z j?zykiem C na poziomie kodu ?r?d?owego pozostaje jednym z podstawowych cel?w projektowych kolejnych standard?w j?zyka.

Co b?dzie nam potrzebne?​
Po pierwsze - jakie? ciastka i herbata (a mo?e i nawet dwie). Przed czytaniem rozlu?nij si?, wyprostuj i przygotuj na du?o my?lenia.
Najwa?niejsz? rzecz? jest kompilator - czyli program w kt?rym b?dziemy pisa? nasze badziewie. Program?w jest serio, multum, aczkolwiek w moim poradniku ja b?d? u?ywa? IDE (integrated development environment, pl. zintegrowane ?rodowisko programistyczne). A mianowicie: code::blocks. Jest to darmowy i bardzo przyjazny program, znajdziecie go po wpisaniu frazy "code::blocks" w google. Je?li nie uda Ci si? znale?? oficjalnej strony producenta i linku do ?ci?gni?cia (nie ten co ma 20-par? mega, tylko ten co ma bodaj?e 72) to znaczy, ?e powiniene? opu?ci? t? stron?. Jestem w stu procentach pewny, ?e nieumiej?tno?? obs?ugiwania si? google == nieumiej?tno?? logicznego my?lenia, a w programowaniu to drugie jest bardzo przydatne :).
UWAGA! przy instalacji pami?taj aby zaznaczy? GNU GCC Compiler, tak jak na zdj?ciu poni?ej:
Pierwsze_uruchomienie_CodeBlocks.png


Pierwszy test programu​
Aby sprawdzi? czy wszystko jest okej z nasz? aplikacj?, klikamy file->new->empty file (lub po prostu control+shift+n). Pojawi nam si? bia?e pole w kt?rym mo?emy pisa?. Wklej tam tamten kod:
PHP:
#include <iostream>
int main()
using namespace std;
{
    cout << "ha, dziala!" << endl;
    return 0;
}
Teraz kliknij F9 i zapisz plik jako L1.cpp (pami?taj o ko?c?wce cpp, inaczej nie zadzia?a!). Je?li niczego nie zjeba?e? to twoim oczom powinien si? ukaza? taki obraz:
4t2b7n.png

Po pierwsze: wiem, ?e nie wiesz co zrobi?e?, jak to si? sta?o i jaki jest to gatunek magii.
Po drugie: to jest aplikacja konsolowa, tz. otwiera Ci si? takie "czarne okienko" a w okienku za?, Tw?j program. Chyba nie my?la?e?, ?e od razu b?dziesz robi? neo boty, nie ^^?

Kod​
Teraz wyt?umacz? Ci co wpisa?e? i dlaczego co? si? wy?wietli?o. Tak wygl?da nasz kod:
PHP:
#include <iostream>
using namespace std;
int main()
{
    cout << "ha, dziala!" << endl;
    return 0;
}
W pierwszej linijce, mianowicie tutaj:
PHP:
#include <iostream>
..."powiedzieli?my" programowi jakiej u?y? biblioteki. Biblioteki wprowadzaj? do naszego programu "dodatkowe mo?liwo?ci", w wi?kszo?ci przypadk?w s? to nowe funkcje. Gdyby?my tego nie dodali to po prostu program nie zrozumia? by reszty kodu kt?ry jest w?a?nie oparty o iostream.

Nast?pne jest to:
PHP:
using namespace std;
To jest przestrze? nazw. S?u?y ona do "skr?cenia" kodu, nie b?d? t?umaczy? jak to wszystko dzia?a, ale poka?? Wam jak kod musia?by wygl?da? bez ?w linijki:
PHP:
#include <iostream>

int main()
{
    std::cout << "ha, dziala!" << std::endl;
    return 0;
}
Znalaz?e? r??nic?? Gratuluj?, wygra?e? kucyka.
Miej na uwadze, ?e je?li chcesz sobie upro?ci? dzia?anie to przestrze? nazw Ci pomo?e, a ja w moim tutorialu b?d? jej u?ywa? - je?li nie masz takiej ochoty, sam b?dziesz musia? sobie poradzi? z wklejaniem std:: w niekt?rych miejscach :).

P??niej mamy to:
PHP:
int main()
Czyli g??wn? funkcj? programu. Tu si? on zaczyna i cz?sto ko?czy. W nawiasach jest miejsce na parametry kt?re om?wi? w niedalekiej przysz?o?ci. Main to nazwa naszej funkcji, g??wna powinna zawsze mie? tak? nazw?.

Teraz przychodzi czas na klamry (lub kwadratowe nawiasy, jakkolwiek to nazywasz).
PHP:
{
}
M?wi? one gdzie zaczyna si? funkcja, a gdzie si? ona ko?czy. Wszystko co nale?y do funkcji si? w nich mie?ci.

Teraz przyszed? czas na instrukcj? kt?ra czyni nasz program, naszym programem. Mianowicie:
PHP:
 cout << "ha, dziala" << endl;
Pierwsze jest cout kt?re m?wi programowi, ?e musi co? wy?wietli? na ekranie. Nast?pnie s? dwie strza?ki skierowane w lewo << kt?re mo?na powiedzie? przekierowuj? nasz? wiadomo?? do cout aby program j? wy?wietli?. "ha, dziala!" to to, co widzieli?my wcze?niej na ekranie, czyli g??wna wiadomo??. Nast?pnie mamy znowu strza?eczki i endl - instrukcje kt?ra karze programowi przej?? do nast?pnego akapitu. Ostatni (nie zapomnij o tym, bo to wa?ne) jest znaczek ;. Pokazuje on programowi, ?e to ju? koniec wiersza i, ?e mo?e przej?? do nast?pnego.

Co ciekawe, m?wi?em, ?e endl karze aplikacji przej?? do nowego akapitu. Zawsze gdy przeskakujemy do nowej linii w wiadomo?ci musi si? pojawi? endl. Przyk?ad, taki kod:
PHP:
#include <iostream>
using namespace std;
int main()
{
    cout << "ha, dziala!";
    cout << "ogolnie taka sytuacja";
    return 0;
}
W praktyce wygl?da?by tak:
nm0wt3.png

Jak wida?, wszystko jest umieszczone w tym samym wersie. Fascynuj?ce.

Inna rzecz zwi?zana z instrukcj? cout jest fakt, ?e nie trzeba tam wkleja? wiadomo?ci. Mo?na wpisa? tam tak?e np. obliczenia, wtedy wygl?da?o by to tak:
PHP:
cout << 5232+6563 << endl;
A wynik tego by?by nast?puj?cy:
du35e.png

Jak wida?, wyskoczy? nam tylko wynik. Gdy chcemy pokaza? ca?e obliczenie, trzeba zmodyfikowa? instrukcj? na to:
PHP:
 cout << "5232 + 6563 = " << 5232 + 6563 << endl;
Wynik:
20hovm1.png

W znacznikach " " wszelkie operacje na liczbach s? ignorowane a wiadomo?? jest wy?wietlana ca?kowicie w ten sam spos?b jak napisana na pocz?tku.
Na razie to na tyle na temat cout :).

Wracaj?c do tematu - ostatni wers to:
PHP:
return 0;
Oznacza to wyj?cie z funkcji. Same return jest "rozbudowane", ale na razie ta wiedza jest dla Was zb?dna.


Podsumowuj?c, w tym dziale nauczyli?my si? wysy?a? wiadomo?ci na ekran. Teraz mo?emy zbija? kas? na pisaniu takowych skomplikowanych program?w i robi? z tego miliony. Gratuluj?, dzi?ki mnie osi?gn??e? sukces ?yciowy i prawdopodobnie zaliczy?e?. Nie ma za co ;)

Zmienna i strumie? wej?ciowy​
Teraz b?dzie fajniej, bo u?ytkownik programu b?dzie m?g? poklika? w klawiatur?, a nie tylko czyta? wiadomo?ci od autora aplikacji :). S?u?y od tego strumie? wej?ciowy, w programie cin. Ale zacznijmy od zmiennych, bo bez nich niemo?liwym b?dzie przej?cie dalej w nauce.
Aby wczyta? dane do programu b?dzie nam potrzebna zmienna - jak sama nazwa wskazuje, b?dzie si? ona zmienia? w programie. Zmienna to obszar w pami?ci z kt?rego pobierane b?d? dane. Je?eli u?ytkownik co? wpisze do programu, to program b?dzie musia? je gdzie? zapisa?. Typ?w zmiennych jest ca?kiem du?o, na dzie? dzisiejszy b?dziemy u?ywa? jednego.
W programie wygl?da ona tak:
PHP:
#include <iostream>
using namespace std;
int main()
{
   int tu_mamy_zmienna; 

    cout << "wartosc zmiennej to" << tu_mamy_zmienna << endl;
    return 0;
}
Zacznijmy mo?e od wyniku, p??niej om?wimy budow? programu:
2gwe5jl.png

Na ekranie zobaczyli?my po wiadomo?ci jak?? randomow? liczb?. Spowodowane jest to tym, ?e stworzyli?my zmienn? "tu_mamy_zmienna" ale nie nadali?my jej ?adnej warto?ci, wi?c program wymy?li? swoj?.
Standardowa budowa zmiennej to:
PHP:
int tu_mamy_zmienna
int to typ zmiennej za? tu_mamy_zmienna to jej nazwa. Nazwa nie mo?e zawiera? polskich znak?w, spacji i mie? cyferki jako pierwszy znak. Przyk?ady niepoprawnych nazw: 1zmienna, zmi?nna, zmienna zajebista. Przyk?ady poprawnych nazw: zmienna1, zmienna_zajebista, zmienna. Proste? Proste.

Ale co gdy chcemy nada? warto?? zmiennej? Wtedy jej struktura si? troch? r??ni:
PHP:
int tu_mamy_zmienna = 1234
Teraz wynik by?y zupe?nie inny:
wfhk.png

Mo?emy teraz zobaczy?, ?e program wy?wietli? liczb? 1234 - a to dlatego, ?e zmienna kt?r? tam umie?cili?my mia?a w?a?nie tak? zawarto??.
Warto te? wspomnie?, ?e taki kod:
PHP:
#include <iostream>
using namespace std;
int main()
{
   int tu_mamy_zmienna; 
   tu_mamy_zmienna = 1234;

    cout << "wartosc zmiennej to" << tu_mamy_zmienna << endl;
    return 0;
}
Mia?by taki sam wynik co ten wy?ej.

Teraz, gdy ju? wiemy czym jest zmienna i jak si? z niej korzysta, mo?emy si? nauczy? obs?ugiwania strumienia wej?cia.
Kod ze strumieniem wej?cia wygl?da?by w ten spos?b:
PHP:
#include <iostream>
using namespace std;
int main()
{
   int tu_mamy_zmienna;

    cout << "podaj zawartosc zmiennej" << endl;
    cin >> tu_mamy_zmienna;
    cout << "zawartosc zmiennej to: " << tu_mamy_zmienna << endl;
    return 0;
}
A program p??niej tak:
iwrgw9.png

Liczb? 2 w drugiej linijce - uwaga(!) - wpisa?em sam, a p??niej program j? wy?wietli? w nast?pnym wersie.
Ale co my tu tak naprawd? zrobili?my? Na pocz?tku, w tej instrukcji cout << "podaj zawartosc zmiennej" << endl; poprosili?my program aby wpisa? nam zawarto?? zmiennej. Nast?pnie pojawi?a si? nowa instrukcja:
PHP:
cin >> tu_mamy_zmienna;
cin to w?a?nie strumie? wej?cia. Za jego pomoc? mogli?my przyczyni? si? do dzia?ania programu i wpisa? dane kt?re b?dzie zawiera?a zmienna tu_mamy_zmienna. Bana? :).
W nast?pnym wersie programu po prostu wy?wietlili?my u?ytkownikowi zawarto?? kt?r? sam przed chwil? wpisa?.

Dzi?ki cin mo?emy te? robi? obliczenia, np. w takim programie:
PHP:
#include <iostream>
using namespace std;
int main()
{
   int zmienna_a;
   int zmienna_b;
    
    cout << "podaj zawartosc zmiennej a" << endl;
    cin >> zmienna_a;
    cout << "podaj zawartosc zmiennej b" << endl;
    cin >> zmienna_b;
    cout << "zmienna a + zmienna b = " << zmienna_a + zmienna_b << endl;
    return 0;
}
Wynik:
2hripn5.png

Na samej g?rze stworzyli?my dwie zmienne, zmienna a i b. Kazali?my u?ytkownikowi wpisa? ich zawarto?? a p??niej dodali?my je do siebie. Proste, co?

Tym oto sposobem doszli?my do ko?ca tej lekcji. Twoja wiedza ju? jest... zaskakuj?co du?a(?).

Praca Domowa​
Napraw ten kod tak aby dzia?a? poprawnie:
PHP:
#include <iostream>
using namespace std;
int main()
{
   int zmienna_a;
   int zmienna_b;
    
    cout << "podaj zawartosc zmiennej a" << endl;
    cin >> zmienna_a;
    cout << "podaj zawartosc zmiennej b" << endl;
    cin >> zmienna_b;
    cout << "podaj zawartosc zmiennej c" << endl;
    cin >> zmiena_c;
    cout << "zmienna a + zmienna b = " << zmienna_a + zmienna_b + zmienna_c << endl;
    return 0;
}

Koniec​
Na dzi? ju? koniec. Nied?ugo wypuszcz? kolejny poradnik w kt?rym b?dziemy kontynuowa? nauk?. Mam nadziej?, ?e si? podoba?o, pozdrawiam!

Zabraniam kopiowania tutoriala na inne strony bez mojej zgody.
 

Kuzirashi

ASP.NET MVC, JS-SPA, PHP, NODE
Dołączył
Lipiec 24, 2010
Posty
772
Liczba reakcji
155
Odp: C++ po mojemu

Fajnie, licz?, ?e doko?czysz t? seri?. Mi?ego dnia i powodzenia.
 

Shirako

Senior User
Dołączył
Listopad 16, 2010
Posty
575
Liczba reakcji
59
Odp: C++ po mojemu

Poradnik fajnie opisany i dla pocz?tkuj?cych w sam raz :D R?b dalej ^^
 
Ostatnia edycja:

#SWAG

Dolej w?dy
Dołączył
Sierpień 3, 2009
Posty
1041
Liczba reakcji
74
Odp: C++ po mojemu

No no, ciesz? si?, ?e kto? chce si? takimi poradnikami zaj??.
 

Arkam

Forum friend
Dołączył
Grudzień 20, 2008
Posty
1980
Liczba reakcji
180
Odp: C++ po mojemu

Poradnik dobry dla nowych xd ale zadanie domowe mog?e? da? jakie? inne, bo w obecnym nawet bez czytania poradnika idzie sie domy?li? czego brakuje xD jak na te?cie IQ xDDD
 

Baabuseek

Advanced User
Dołączył
Sierpień 17, 2008
Posty
449
Liczba reakcji
43
Odp: C++ po mojemu

Gratulacje, wszystko wyt?umaczone w prosty spos?b, na ch?opski rozum, czego brakowa?o gdy zaczyna?em swoj? przygod?.
Przyczepi?bym si? do kilku rzeczy :)

xReaper napisał:
Aby sprawdzi? czy wszystko jest okej z nasz? aplikacj?, klikamy file->new->empty file (lub po prostu control+shift+n). Pojawi nam si? bia?e pole w kt?rym mo?emy pisa?. Wklej tam tamten kod:
PHP:
#include <iostream> 
int main() 
using namespace std; 
{ 
    cout << "ha, dziala!" << endl; 
    return 0; 
}
using namespace std; powinien by? przed funkcj? programu.

xReaper napisał:
Na ekranie zobaczyli?my po wiadomo?ci jak?? randomow? liczb?. Spowodowane jest to tym, ?e stworzyli?my zmienn? "tu_mamy_zmienna" ale nie nadali?my jej ?adnej warto?ci, wi?c program wymy?li? swoj?.
Ta "jaka? randomowa liczba" jest fragmentem czego? z pami?ci, mo?e to by? plik, fotka czy cokolwiek innego. Program sam nic nie wymy?la.

Co do nast?pnego/nast?pnych poradnika/?w, chce poda? pewn? wskaz?wk?, gdy? ten motyw sprawi? mi troszk? problem?w w bardziej rozbudowanych programach, mianowicie pobranie ca?ej linii (nie tylko jednego wyrazu) wpisanego przez u?ytkownika.
cin >> zmienna; pobiera tylko wyraz (do spacji)
getline(cin, zmienna); nie zawsze dzia?a tak jak by?my tego chcieli (czasem program lubi pomija? ow? linie)
rozwi?zaniem jest getline(cin>>ws, zmienna);

I zgodz? si? tutaj ze swoim poprzednikiem, zadanie jest zbyt proste.
 

Grimekk

memsoria.pl
Dołączył
Październik 9, 2011
Posty
609
Liczba reakcji
55
Odp: C++ po mojemu

Moozie napisał:
using namespace std; powinien by? przed funkcj? programu.
Nie, nie powinien :D. W ka?dym razie dzi?ki za komentarz, przyjm? krytyk? do siebie i postaram si? poprawi? b??dy.

@down
To jest poprawka kosmetyczna, bo zastosowania w programie to nie ma - jest tylko jedna funkcja.
 
Ostatnia edycja:

Dantez

Moim sekretem jest ciasto
Dołączył
Maj 22, 2008
Posty
1206
Liczba reakcji
202
Odp: C++ po mojemu

cin to w?a?nie strumie? wyj?cia
Wej?cia.

Nie, nie powinien :D
Powinien

PHP:
#include <iostream>  
void zle()
{
	cout << "Nie ma" << endl; // powinno byc std, namespace tutaj nie dziala bo jakis debil ustawil go w main
}

int main()  
{  
    using namespace std;  
    zle(); 
    return 0;  
}

@up
Mimo to edytowa?e? post. Mo?e i w tym nie ma, ale potem kto? si? mo?e dziwi?, czemu to m?j przyk?ad nie dzia?a.
 
Ostatnia edycja:

Mleczko

Active User
Dołączył
Marzec 29, 2009
Posty
118
Liczba reakcji
16
Odp: C++ po mojemu

ma?o poradnik?w c++? jest ich ogrom wsz?dzie. Jak chcesz pisa? to se pisz, ale je?li chodzi o dobre i rzetelne poradniki to polecam cpp0x.pl
 
Do góry