What's new

-Łatwy C++ po mojemu

Grimekk

memsoria.pl
Joined
Oct 9, 2011
Messages
609
Reaction score
56
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 said:
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
Joined
Jul 24, 2010
Messages
772
Reaction score
157
Odp: C++ po mojemu

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

Shirako

Senior User
Joined
Nov 16, 2010
Messages
575
Reaction score
59
Odp: C++ po mojemu

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

#SWAG

Dolej w?dy
Joined
Aug 3, 2009
Messages
1,041
Reaction score
75
Odp: C++ po mojemu

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

Arkam

Forum friend
Joined
Dec 20, 2008
Messages
1,980
Reaction score
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
Joined
Aug 17, 2008
Messages
449
Reaction score
45
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 said:
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 said:
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
Joined
Oct 9, 2011
Messages
609
Reaction score
56
Odp: C++ po mojemu

Moozie said:
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.
 
Last edited:

Dantez

Moim sekretem jest ciasto
Joined
May 22, 2008
Messages
1,206
Reaction score
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.
 
Last edited:

Mleczko

Active User
Joined
Mar 29, 2009
Messages
118
Reaction score
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
 
Top