C++: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M (kasacja)
M (Do uzupełnienia)
Linia 1: Linia 1:
'''C++''' – wieloparadygmatowy, wielofunkcyjny, uniwersalny, obiektowy, generyczny, niskopoziomowy, bezsensowny język programowania będący dla [[C (język programowania)|C]] tym, czym jest [[Nonsensopedia]] dla [[Wikipedia|Wikipedii]] (albo na odwrót).
{{kasacja}}


== Nowości ==
{{Programowanie}}
W porównaniu z C, język posiada wiele nowych możliwości, które czynią składnię jeszcze bardziej zagmatwaną i trudniejszą do zrozumienia.
'''C++''' – nowoczesne, wielofunkcyjne rozszerzenie [[C (język programowania)|języka C]]. W odróżnieniu od [[C (język programowania)|C]] opiera się nie na [[funkcja|funkcjach]], lecz na [[programowanie obiektowe|obiektach]], co w połączeniu z typowymi dla C instrukcjami niskiego poziomu pozwala pisać [[program|programy]] 10E+5 do 10E+10 razy mniej czytelne niż w C.
Składnia C++ jest aż tak nieczytelna, że dużo łatwiej domyślić się, do czego służy program po jego kodzie binarnym niż w źródle, tzw. cepie. Mało osób zna C++, lecz wszyscy C.


=== Klasy ===
==Czego potrzeba na początek?==
W związku z wszechobecną modą na programownaie obiektowe, w C++ wprowadzono klasy, które są dokładnie tym samym, co znane z C struktury. Jedyną różnicą jest to, że pola i metody struktur są domyślnie publiczne, a pola i metody klas są domyślnie prywatne, ale i tak nikt nie wie, co to znaczy.
Aby poznać trudy programowania (a przynajmniej podstawy), potrzeba następujących rzeczy:
* '''[[komputer|komputera]]''' – pisanie programów na kartce jest więcej niż niewygodne;
* '''[[kompilator|kompilatora]]''' – jest to program, który ''spróbuje'' przetłumaczyć nasze wypociny na język zrozumiały dla komputera; Początkujący nazywają go "komplikatorem", jest to błędna nazwa, chociaż oddaje wiele prawdy.
* '''świętej cierpliwości''' – przydatna, jeśli wciąż wyskakują nam błędy, a my nie potrafimy ich znaleźć. Jej brak skutkuje często zniszczeniem sprzętu przy pomocy głowy walącej w klawiaturę, nogi kopiącej jednostkę centralną, czy pięści rozbijającej monitor.
* '''znajomego [[informatyk|informatyka]]''' – przyda się, kiedy nam się uda zepsuć sprzęt lub system padnie dzięki naszym umiejętnościom programowania.
* '''[[pieniądze|pieniędzy]]''' – przydają się na honorarium dla znajomego informatyka, kiedy braknie nam świętej cierpliwości.


=== Przeciążanie operatorów ===
==Początki nauki C++==
'''Przeciążanie operatorów''' – jak sama nazwa wskazuje, jest to rodzaj polimorfizmu pozwalający zdefiniować rożne zachowanie operatora w zależności od przyjętych operandów.
Koniecznie trzeba wtedy napisać program, który wyświetli nam w konsoli/terminalu napis ''Hello, world'' (opcjonalnie ''Spieprzaj, dziadu''). Oto jego [[kod źródłowy]] wraz z komentarzami:

#include <iostream> /*dołącza bibliotekę iostream. Nikt nie wie, do czego to właściwie służy
Mówiąc po ludzku: przeciążanie operatorów jest wtedy, gdzy „+” (plus) oznacza odejmowanie, „-” (minus) – dzielenie, a „/” (slesz) – wyświetlenie napisu „Hello, world!”. Dzięki temu nikt nie będzie w stanie zorientować się, co dany fragment kodu robi.
Ilość osób, która wie, do czego to służy jest liczbą ujemną.*/

using namespace std; // prawdopodobnie służy to temu, byśmy mogli napisać program ''łatwo''<br>
<span style="color:#440088;"><b>int</b></span> operator+(<span style="color:#440088;"><b>int</b></span> a, <span style="color:#440088;"><b>int</b></span> b) <span style="color:#666666;">// plus oznacza odejmowanie</span>
int main() // to jest funkcja główna, czyli taki worek na wszystko.
{
{
<span style="color:#880044;"><b>return</b></span> a-b;
cout << "Hello world"; /* oto standardowy strumień wyjścia. Zapamiętaj tę nazwę i formułę!<br>
}
W cudzysłowie można napisać co się chce, w tym wspomniane wcześniej ''spieprzaj dziadu''.*/
<span style="color:#440088;"><b>int</b></span> operator-(<span style="color:#440088;"><b>int</b></span> a, <span style="color:#440088;"><b>int</b></span> b) <span style="color:#666666;">// minus oznacza dzielenie</span>
cin.get(); // to jest po to, by program w windowsowskiej konsoli się wyświetlił, a nie mignął.
{
return 0; // Program zwraca takie samo zero, jakim sam jest od początku.
<span style="color:#880044;"><b>return</b></span> a/b;
}
<span style="color:#440088;"><b>int</b></span> operator/(<span style="color:#440088;"><b>int</b></span> a, <span style="color:#440088;"><b>int</b></span> b) <span style="color:#666666;">// slesz powoduje wypisanie "Hello world!"</span>
<span style="color:#666666;">// i zawsze daje wynik 7</span>
{
<span style="color:#aa0011;">std::cout</span> << "<b><i>Hello, world!</i></b>" << <span style="color:#aa0011;">std::endl</span>;
<span style="color:#880044;"><b>return</b></span> 7;
}
}
<span style="color:#440088;"><b>int</b></span> main()

Jak widać, choćby nie wiadomo, jak się człowiek starał, kod zawsze będzie zupełnie nieczytelny.<br>
A oto program istoty grajacej w [[Tibia|Tibię]] [[kod źródłowy]]:
#include<iostream><br>
using namespace std;<br>
int main()
{
{
<span style="color:#440088;"><b>int</b></span> a,b,c;
const unsigned long long w=36000000000000000000;//stała w ma wart. 36 miliardow miliardow(za duzo zeby napisac slownie).
<span style="color:#666666;">// przypisujemy liczbom "a" i "b" wartosc "2"</span>
double tablica [w];//daje zeby bylo 36 miliardow miliardow zmiennych ok. 260000 pb(1pb=1024tb, 1tb=1024gb) :}.
a=2;
tablica[1]=1;//zabiera z tego 1 zmienna i daje jej wartosc 1
b=2;
double tablica2[w];//druga liczba
<span style="color:#666666;">// przypisujemy liczbie "c" wartosc "a+b"</span>
tablica2[1]=0;//to samo
c=a+b;
double wynik[w];//wynik
<span style="color:#666666;">// wypisujemy wartosc "c" na ekran</span>
wynik[1]=tablica2[1]+tablica[1];//oblicza dzialanie 1+1 bo sam nie umie
<span style="color:#aa0011;">std::cout</span> << c << <span style="color:#aa0011;">std::endl</span>;
cout<<wynik[1];
<span style="color:#666666;">// jak latwo sie domyslic, program wypisuje "0"</span>
system("start c:/tibia");//rozpoczyna fascynujaca gre
return 0;
/*tibiak nie potrzebuje cin.get bo on to zobaczy tak czy siak bo w tibi przyzwyczjil swe oczy do <br>
znikajacych cyferek*/
}
}
Na koniec program ma ok. 780000 pb.
jak ktos chce


==Schody==
=== Szablony ===
Twórca C++, pragnąc wyzwolić programistów od złego Doktora Preprocesora, stworzył coś, co nazwał systemem szablonów. Szablony umożliwiają napisanie tego, co dawniej zajmowało jedną linię, w pięciu liniach.
Schody w programowaniu C++ zaczynają się szybko, można wyróżnić wiele z nich, m.in.:
* '''funkcje''' – dziwne twory umieszczane po ''dyrektywach preprocesora'' używane później w ''funkcji głównej '''main'''''.
* '''tablice''' – przez [[lamer|specjalistów]] zwane fachowo tabelami. Przechowują wiele ''zmiennych tego samego typu''.
* '''typy zmiennych''' – w C++ istnieje wiele typów zmiennych, a każda służy do czego innego. Większość osób, które porwały się na naukę tego języka poprzestaje na zmiennej typu ''int'', ale i tak nie wie dokładnie, jaki ma ona zakres. Zaawansowani cepiarze znają typ float, jednak nie da się go opisać w kilku zdaniach, niektóre tysiąc-stronnicowe książki nie potrafią tego dobrze wytłumaczyć.
* '''pętle''' – jak sama nazwa wskazuje, służy do zapętlania programu, by robił jedno i to samo do pewnego momentu. W praktyce wychodzi często, że do nieskończoności, tzn. aż komputer się zawiesi.
* '''struktury''' – twory, których nikt nie potrafi stosować, a z założenia zbierają kilka informacji jednocześnie.
* '''tablice struktur''' – połączenie tablic i struktur. Większość nie pojmuje nawet tych pierwszych, toteż nie ma sensu opisywać tego zagadnienia.
* '''Klasy''' – bardziej zaawansowane struktury, w których wszystko jest domyślnie prywatne ( cokolwiek to znaczy )
* '''Wskaźnik''' - w założeniu miał na coś wskazywać. W efekcie doprowadza przeciętnego użytkownika do szewskiej pasji.


Funkcja „min” w stylu C (makro preprocesora):
==Wykorzystanie==
#define min(a,b) ((a) > (b) ? (b) : (a))
* Torturowanie uczniów w liceach z poszerzonym programem informatyki.
* Zabawy w [[hacker|hackera]].
* Imponowanie nieoświeconym osobom płci żeńskiej umiejętnością programowania (u mężczyzn).
* Odstraszanie nieoświeconych osobników płci męskiej umiejętnością programowania (u kobiet).


Funkcja „max” w stylu C++ (szablon funkcji):
template <typename typ>
typ min(typ a, typ b)
{
return ((a) > (b) ? (b) : (a));
}


Niestety, nie udało się wyeliminować preprocesora z C++, bo wciąż jest on potrzebny do łączenia plików źródłowych (<code>#include</code>).
[[en:C++]]
[[es:C--]]
[[fr:C++]]
[[nn:C++]]
[[pt:C++]]
[[ru:Си плюс минус]]


{{stubinf}}
Ten program ubustwia pyton! (godola)
[[Kategoria:Języki programowania]]
[[Kategoria:Języki programowania]]

Wersja z 16:23, 7 mar 2010

C++ – wieloparadygmatowy, wielofunkcyjny, uniwersalny, obiektowy, generyczny, niskopoziomowy, bezsensowny język programowania będący dla C tym, czym jest Nonsensopedia dla Wikipedii (albo na odwrót).

Nowości

W porównaniu z C, język posiada wiele nowych możliwości, które czynią składnię jeszcze bardziej zagmatwaną i trudniejszą do zrozumienia.

Klasy

W związku z wszechobecną modą na programownaie obiektowe, w C++ wprowadzono klasy, które są dokładnie tym samym, co znane z C struktury. Jedyną różnicą jest to, że pola i metody struktur są domyślnie publiczne, a pola i metody klas są domyślnie prywatne, ale i tak nikt nie wie, co to znaczy.

Przeciążanie operatorów

Przeciążanie operatorów – jak sama nazwa wskazuje, jest to rodzaj polimorfizmu pozwalający zdefiniować rożne zachowanie operatora w zależności od przyjętych operandów.

Mówiąc po ludzku: przeciążanie operatorów jest wtedy, gdzy „+” (plus) oznacza odejmowanie, „-” (minus) – dzielenie, a „/” (slesz) – wyświetlenie napisu „Hello, world!”. Dzięki temu nikt nie będzie w stanie zorientować się, co dany fragment kodu robi.

int operator+(int a, int b) // plus oznacza odejmowanie
{
    return a-b;
} 
int operator-(int a, int b) // minus oznacza dzielenie
{
    return a/b;
} 
int operator/(int a, int b) // slesz powoduje wypisanie "Hello world!"
                            // i zawsze daje wynik 7
{
    std::cout << "Hello, world!" << std::endl;
    return 7;
}
int main()
{
   int a,b,c;
   // przypisujemy liczbom "a" i "b" wartosc "2"
   a=2;  
   b=2;  
   // przypisujemy liczbie "c" wartosc "a+b"
   c=a+b;  
   // wypisujemy wartosc "c" na ekran
   std::cout << c << std::endl; 
   // jak latwo sie domyslic, program wypisuje "0"
}

Szablony

Twórca C++, pragnąc wyzwolić programistów od złego Doktora Preprocesora, stworzył coś, co nazwał systemem szablonów. Szablony umożliwiają napisanie tego, co dawniej zajmowało jedną linię, w pięciu liniach.

Funkcja „min” w stylu C (makro preprocesora):

#define min(a,b) ((a) > (b) ? (b) : (a))

Funkcja „max” w stylu C++ (szablon funkcji):

template <typename typ>
typ min(typ a, typ b)
{
    return ((a) > (b) ? (b) : (a));
}

Niestety, nie udało się wyeliminować preprocesora z C++, bo wciąż jest on potrzebny do łączenia plików źródłowych (#include).

Szablon:Stubinf