Grimekk
memsoria.pl
- Joined
- Oct 9, 2011
- Messages
- 609
- Reaction score
- 55
Wst?p
Yo. To znowu ja, dzi? sobie napisz? cz??? drug?. W sumie to nie mam nic do dodania, zacznijmy wi?c.Komentarze
W C++ mo?emy dodawa? tak zwane komentarze. S? to cz??ci kodu kt?re b?d? ca?kowicie zignorowane przez kompilator. Podstawowy typ komentarzu to ten kt?ry wyst?puje tylko w jednym wersie, wygl?da to tak:
PHP:
#include <iostream>
using namespace std;
int main()
{
int zmienna_a; //zmiena a
int zmienna_b; //zmienna b
int zmienna_c; //zmienna c
cout << "podaj zawartosc zmiennej a" << endl;
cin >> zmienna_a;
cout << "podaj zawartosc zmiennej b" << endl; //magia
cin >> zmienna_b;
cout << "zmienna a + zmienna b = " << zmienna_a + zmienna_b << endl; //dodawanie
return 0;
}
PHP:
cout << "zmienna a + zmienna b = " << zmienna_a + zmienna_b << endl; //komen
tarz i jego kontynuacja return 0;
W kodzie:
PHP:
#include <iostream>
using namespace std;
int main()
{
int zmienna_a;
int zmienna_b;
int zmienna_c;
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; /* komentarz wielowierszowy
sie kontynuuje... */
return 0;
}
Operatory Arytmetyczne i Operacje na Liczbach
Operatory arytmetyczne to podstawowe znaki kt?rych ucz? w drugiej klasie podstaw?wki. Mianowicie:- + dodawanie
- - odejmowanie
- / dzielenie
- * mno?enie
- % dzielenie z reszt?
W praktyce to wygl?da nast?puj?co:
PHP:
cout << 12351634 + 52345 - 143242 * 6134 / 1253;
PHP:
cout << (12351634 + 52345 - 143242) * 6134 / 1253;
W ostatniej lekcji u?ywa?em tylko dodawania, tutaj troch? rozbudowa?em ?w filozofi?. Zastosowanie jest takie same.
Problem z dzieleniem z reszt?
Je?li napiszemy taki kod:
PHP:
#include <iostream>
using namespace std;
int main()
{
float zmienna_a;
float 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;
}
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;
}
Operacje na liczbach
Na prze?omie lat programi?ci, modyfikuj?c j?zyk upro?cili sobie zadanie tak aby poprawi? czytelno?? kodu i go skr?ci?. Mo?na to zobaczy? na przyk?ad podczas inkrementacji i dekrementacji (ciekawostka: wed?ug google chrome s?owo "inkrementacja" nie istnieje i podkre?li?o mi je na czerwono xD. Ciekawostka nr 2.: podczas pisania zawarto?ci tych nawias?w zauwa?y?em, ?e s?owo "google" te? nie jest umieszczone w s?owniku przegl?darki, za? "Google" jest <lol>).
Wygl?da to tak:
PHP:
#include <iostream>
using namespace std;
int main()
{
int zmienna_a;
cout << "podaj zawartosc zmiennej a" << endl;
cin >> zmienna_a;
cout << "zawartosc a to " << zmienna_a << endl;
zmienna_a++;
cout << "nowa wartosc to: " << zmienna_a << endl;
++zmienna_a;
cout << "nowa wartosc to " << zmienna_a << endl;
--zmienna_a;
cout << "nowa wartosc to " << zmienna_a << endl;
zmienna_a--;
cout << "nowa wartosc to " << zmienna_a << endl;
return 0;
}

Jak wida? za pomoc? tych znak?w: --, ++ by?em w stanie doda? i odj?? jeden od warto?ci zmiennej. Struktura dekrementacji i inkrementacji jest opisana w przyk?adzie, ale dla rozwiania w?tpliwo?ci:
PHP:
--zmienna_a //odejmowanie 1
zmienna_a-- //odejmowanie 1
++zmienna_a //dodawanie 1
zmienna_a++ //dodawanie 1
Mo?na te? robi? inne operacje na zmiennych, na przyk?ad zmienia? te kt?re zadeklarowali?my od razu. Przyk?ad:
PHP:
#include <iostream>
using namespace std;
int main()
{
int zmienna_a = 40;
zmienna_a = zmienna_a * 2;
cout << zmienna_a;
return 0;
}

Operacja tu jest bardzo oczywista. Wpisali?my ju? od pocz?tku warto?? zmiennej zmienna_a, a p??niej j? po prostu pomno?yli?my przez 2.
Mo?na j? jednak?e upro?ci?, w ten spos?b:
PHP:
int zmienna_a = 40;
zmienna_a *= 2;
Jak ju? si? domy?lacie, podobnie b?d? dzia?a?y te operatory: +=, -=, /=, %= (+ na dodawanie, - na odejmowanie itd.)
Kolejnymi operacjami s? te kt?re s?u?? do por?wnania. Czyli:
- < mniejsze
- <= mniejsze lub r?wne
- > wi?ksze
- >= wi?ksze lub r?wne
- != r??ne
- == r?wne
S? to standardowe operatory kt?rych ucz? nas w szkole. Mog?em sobie oszcz?dzi? ich opisywania pr?cz tego przedostatniego, bo ich znaczenie jest raczej oczywiste. No, ale kto wie - mo?e czyta to jaki? przedszkolak.
Je?li chcemy ich zastosowa? w praktyce to przyda nam si? nowy typ zmiennej, a na my?li mam bool, w kt?rym zapisywana jest warto?? true lub false (prawda lub fa?sz).
Mo?na to napisa? na przyk?ad w ten spos?b:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a;
a = 124 <= 153;
cout << "czy 124 jest mniejsze, lub rowne 153? " << a;
return 0;
}

Dlaczego po zapytaniu pojawi?a si? liczba 1? Jest to spowodowane tym, ?e bool przyjmuje warto?? 1 (true) lub 0 (false). W tym wypadku por?wnanie by?o oparte na faktach, wi?c dostali?my odpowied? true.
To nie wszystko. Bool jest w stanie obliczy? te? normalne dzia?ania i por?wna? ich wyniki. Czyli:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a;
a = 3 * 12 + 1 <= 6 * 6 + 2;
cout << "czy 3 * 12 + 1 jest mniejsze, lub rowne 6 * 6 + 2? " << a;
return 0;
}

Inna sprawa dotyczy por?wnywania warto?ci kt?re nie s? zapisane w zmiennej. Czyli:
PHP:
#include <iostream>
using namespace std;
int main()
{
cout << "czy 350 jest rowne 350? = " << 350 == 350;
return 0;
}
PHP:
#include <iostream>
using namespace std;
int main()
{
cout << "czy 350 jest rowne 350? = " << ( 350 == 350 );
return 0;
}
Wart? do opisania kwesti? jest te? przypisywanie warto?ci do bool bez ?adnego por?wnywania (czyli co si? stanie jak przypiszemy zmiennej po prostu warto?? i sprawdzimy czy wychodzi true czy false):
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a = 123;
bool b = 0;
bool c = 152153;
bool d = 124125;
cout << "prawda czy falsz? = " << a << endl;
cout << "prawda czy falsz? = " << b << endl;
cout << "prawda czy falsz? = " << c << endl;
cout << "prawda czy falsz? = " << d << endl;
return 0;
}

Wniosek nasuwa si? sam - wszystkie warto?ci kt?re nie s? 0 to true (prawda)
Ostatnim typem operator?w w C++ s? operatory logiczne.
S? 3 typy operator?w logicznych: i, negacja oraz lub. W C++ zapisujemy je tak:
- i - && - aby zosta?a zwr?cona prawda, wszystkie warto?ci musz? by? prawdziwe
- negacja - ! - zwr?cenie warto?ci przeciwnej
- lub - || - ?eby zosta?a zwr?cona prawda to przynajmniej jedna warto?? musi by? prawdziwa
lub - ||
Formalnie nazywamy to sum? logiczn?. Gdy mamy 2 warto?ci i je?li przynajmniej jedna z nich jest prawdziwa - wyjdzie nam true. Zobrazowa?em to na przyk?adzie poni?ej:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a = true || false;
bool b = false || false;
cout << "true || false = " << a << endl;
cout << "false || false = " << b << endl;
return 0;
}

W pierwszej zmiennej wynik okaza? si? prawd? gdy? chocia? zawiera? on jeden false, to umieszczony by? tam tak?e jeden true. W zmiennej b za? by?y same fa?sze - wi?c wynikiem ko?cowym by?o 0 (false). Wnioskuj?c: gdy w zmiennej jest chocia? jedno true to automatycznie wynikiem zmiennej b?dzie prawda.
i - &&
&& nazywamy tak naprawd? iloczynem logicznym. Zostanie on spe?niony tylko wtedy gdy wszystkie, podkre?lam wszystkie warto?ci w zmiennej b?d? prawd?. Mo?ecie to zobaczy? na poni?szym przyk?adzie:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a = true && false;
bool b = false && false;
bool c = true && true;
cout << "true && false = " << a << endl;
cout << "false && false = " << b << endl;
cout << "true && true = " << c << endl;
return 0;
}

Jak sami widzicie - tylko w zmiennej c obie warto?ci logiczne by?y prawd?, wi?c tylko tam pojawi?a si? cyferka 1
! - negacja
Negacja ze wszystkich trzech wbrew pozorom jest zdecydowanie najprostsza. Negacja to po prostu alternatywa true, lub false - tz. negacj? true jest false, a negacj? false jest true. W kodzie wygl?da to tak:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a = true;
bool b = false;
cout << "zmienna a = " << !a << endl;
cout << "zmienna b = " << !b << endl;
return 0;
}

Zmienna a przekszta?ci?a si? w false, a zmienna b w true. Bana?.
Ciekawostk? mo?e by? to, ?e jak damy dwa ! tak jak na przyk?adzie poni?ej:
PHP:
cout << "zmienna b = " << !!b << endl;
??czenie operator?w logicznych
W C++ mo?emy ??czy? operatory opisane powy?ej, na przyk?ad w ten spos?b:
PHP:
#include <iostream>
using namespace std;
int main()
{
bool a = true && false;
bool b = false && false;
bool c = true && true;
cout << "true && false = " << !a << endl;
cout << "false && false = " << !!b << endl;
cout << "true && true = " << c << endl;
return 0;
}

Mo?emy zobaczy?, ?e zmienna a zamiast zwr?ci? nam false, zwr?ci?a nam true - jest to spowodowane dodaniem negacji. Zmienna b za? nie zmieni?a si?, chocia? dodali?my dwa wykrzykniki - no w?a?nie, dwa. Po pierwszym wykrzykniku wynik najpierw zmieni? si? w prawd?, a po zastosowaniu drugiego, z powrotem w fa?sz. Easy.
Przypisanie wielokrotne
Jest to bardzo prosta kwestia do opisania. Gdy na przyk?ad chcemy mie? 2 warto?ci w jednej zmiennej i obie s? tym samym to zazwyczaj zapisujemy to w ten spos?b:
PHP:
int a1, a2;
a1 = 3;
a2 = 3;
PHP:
int a1, a2;
a1, a2 = 3;
PHP:
int a1, a2;
a1 = 3;
a2 = a1;
Koniec
Na dzi? to ju? koniec, bo i tak si? rozpisa?em. Po zako?czeniu tej lekcji pewnie sobie my?lisz "Reaper, kurwa, no niby co? si? tam nauczy?em, ale ja chc? robi? programy a nie rozwi?zywa? prace domowe z majzy!". Mam dla Ciebie wiadomo??: matematyka jest nieroz??czn? cz??ci? programowania i wszystko czego Ci? tu nauczy?em oka?e si? przydatne w przysz?o?ci.Aha, no i odpu?ci?em ju? sobie wymy?lania pracy domowej, w tej lekcji twoim homeworkiem b?dzie po prostu eksperymentowanie i zabawa kodem.
Zabraniam kopiowania tutorialu na inne strony bez mojej zgody.
Pozdrawiam.