Posty

Programowanie obiektowe w języku C++.Cz.1 Klasy oraz struktury

Cześć! Dzisiaj zajmiemy się programowaniem obiektowym. Rozszyfrujmy na samym początku znaczenie tego sformułowania. Programowanie obiektowe - Programujemy w sposób obiektowy. Czyli używając obiektów. Czym jest obiekt? Jest to reprezentacja szczegółowa klasy lub struktury. Zobaczmy na prosty przykład class MyClass ///Przyjęło się nazywać nazwy klas z dużej litery { };///Średnik na końcu jest związany z bezpośrednim tworzeniem obiektu klasy. Ale o tym później int main() { MyClass myClass;///Obiekt } Jak widzimy obiekt to reprezentacja klasy lub struktury(Zamiast class możemy wstawić struct. Zadziała w ten sam sposób). Wróćmy do klasy. Pojawia się pytanie: Po co mi klasa ? Do definiowania w jej wnętrzu metod(funkcji w klasie), oraz zamiennych. Dlaczego klasa lub struktura, a nie porozrzucane po całym programie ? Ta kwestia jest złożona. Pierwszym powodem dla którego warto stosować klasę jest porządek, ale to subiektywna kwestia. Najważniejszym jest to, że progr...

Wskaźniki w C++ cz.2

Cześć! Dzisiaj zajmiemy się drugą część wskaźników i związaną z Nią alokacją pamięci. Wyobraźmy sobie, że mamy tablicę o rozmiarze 4. I chcielibyśmy mieć tablicę o rozmiarze 5. Co w pierwszej chwili przychodzi Nam do głowy ? Alokacja na nowo. To nie jest jednak najlepszy pomysł, gdyż zobaczmy poniższy kod: int *myTable = new int [4]; for(int i=0;i<4;i++) myTable[i]=i; for(int i=0;i<4;i++) std::cout<<myTable[i]<<" "; std::cout<<'\n'; myTable = new int [5];//Alokuje na nowo for(int i=0;i<4;i++) std::cout<<myTable[i]<<" "; std::cout<<'\n'; Powyższy kod daje Nam jasno do zrozumienia, że spowoduje to utracenie danych w tablicy. Co więc powinniśmy zrobić? Tutaj sprawa nie jest taka prosta. Możemy włożyć tablicę myTable to innej tablicy. I potem skopiować ją do tej pierwszej. Zobaczmy to w akcji: int *myTable = new int [4]; int * secondTable = new int [4]; for(int i=0;i<4;i++) myTable[i]=...

Wskaźniki w C++ cz1

Cześć! Dzisiaj zajmiemy się rzeczą bardzo ważną i fundamentalną w rozwoju informatyki. Zajmiemy się wskaźnikami. Czym jest wskaźnik ? Wskaźnik to zmienna która, zawiera w sobie adres innej zmiennej. Pokażmy to na przykładzie: int * myPointer; int variable; myPointer = &variable; Co w tym momencie zrobiliśmy ? Przypisaliśmy do zmiennej myPointer adres zmiennej variable. Adres oznaczany jest &(ampersandem). Pojawia się teraz pytanie po co Nam adres ? Otóż do kilku ważnych rzeczy. Po pierwsze szybkość. Komputer wiedząc gdzie ma się udać zrobi coś szybciej, niż przeszukując bit po bicie. Po co jeszcze ? By  za-alokować dynamicznie pamięć. Brzmi groźnie. W istocie sprowadza się do tego, że jeśli chcemy mieć pamięć dynamiczną, czyli taką którą możemy usunąć, gdy nie jest Nam potrzebna lub coś do Niej dodać(co jest kłopotliwe). Dlaczego potrzebuje do tego wskaźników ? Wskaźnik zawiera adres i komputer dzięki temu adresowi wie gdzie będzie zawierać się dynamic...

Tablice w języku C++

Cześć! Dzisiaj zajmiemy się tablicami. Tablica to uporządkowany, znajdujący się w pamięci obok siebie, zestaw danych. Zestawem danych może być cokolwiek. Może to być liczba, string, lub inny typ danych. To co odróżnia tablicę od innych struktur, to jej uporządkowanie w pamięci obok siebie. Pamięć to zestaw rekordów, z których każdy ma swój adres. Czym jest adres ? Adres to (zazwyczaj) liczba, która jest unikalna dla całej pamięci i wskazuje, że chodzi nam o ten konkretny adres. Dla przykładu: Adres:  1      2             3 Dane:   35    79    "Ala ma kota" To jest właśnie takie przyporządkowanie do adresu, odpowiadającym im danych. Jak to się ma do tablic. O ile w przypadku innych danych, lub zmiennych, mogą(zwykle nie są, w pojedyńczym programie) być one porozrzucane po całej pamięci. Tak w przypadku tablic, są one obok siebie. Teraz: Jaki jest cel, ż...

Klasa String w C++. Obszerna analiza

Cześć! Jak przygoda z programowaniem ? Mam nadzieję, że całkiem ciekawie. Dzisiaj zajmiemy się tematem dla jednych ciekawym, a dla innych jeszcze bardziej ciekawym. Zainteresowany ? Zapraszam. String, co to takiego ? Klasa string jest połączeniem tablicą charów. Czym jest "char"? To pojedyńczy znak, który wewnątrz siebie jest liczbą(może być zarówno dodatnią, jak i ujemną), która reprezentuje znaki w standardzie UTF8. Tablica String jest tablicą ciągłą, to oznacza że znajduje się nieprzerwanie w pamięci od początku, aż do końca. Element pierwszy ma indeks zerowy. Ostatni indeks ma zawsze znacznik '\0'. Dlaczego ? String jest tablicą ciągłą i kompilator musi wiedzieć gdzie się kończy. Jak wygląda deklaracja string w c++? std::string myString; W ten sposób. Napiszmy więc związany z Nim najprostszy kod. #include <iostream> #include <string>///Library for String int main() { std::string myString = "Ala ma kota, ale nie Filemona"; ...

Funkcje oraz typy danych w języku C++. Szczegółowa analiza

Cześć! Dzisiaj zajmiemy się tzw. funkcjami. W matematyce funkcja to coś wykonujące czynność. W programowaniu jest podobnie. Może zanim przejdziemy do głębszego zastanowienia się po co Nam funkcje, zobaczmy na kod. Jak to mawiał Linus Torvalds, talk is cheap. Show me the code. So. Do this. #include <iostream> void showHelloWorld() { std::cout<<"Witaj, Swiecie!"<<'\n'; } int main() { showHelloWorld(); } Skompilujmy to. Wychodzi na to, że Nasz kod generuje identyczny wynik, jak w poprzednim tekście. Wywołanie showHelloWorld następuje w mainie. Czyli od pierwszego miejsca wykonywania danych. Tam właśnie zaczyna się wykonywać Nasz program. Co tym razem jest w mainie ?   showHelloWorld(); Co to oznacza ? Odniesienie się do funkcji o takim imieniu. Poszukajmy w Naszym programie czegoś, co tak się nazywa. Znajdujemy takie cudo: void showHelloWorld() { std::cout<<"Witaj, Swiecie!"<...

Co dokładnie oznacza std::cout<<"Witaj Swiecie!"<<'\n''; w C++ ?

Cześć! W poprzednim poście zajmowaliśmy się napisanie i skompilowaniem prostego projektu. Jeśli uważanie czytałeś, wiesz już nie tylko jak to napisać, ale także co dokładnie robiliśmy. Teraz następuje więc pora na wytłumaczenie kodu. Przepiszmy go jeszcze raz i wytłumaczmy linijka po linijce. #include <iostream> int main() { std::cout<<"Witaj Swiecie!"<<'\n''; } Zacznijmy od linijki pierwszej. #include <iostream> Co to jest ? Instrukcja preprocesora. Spokojnie, to nie takie trudne. Znaczek #oznacza właśnie definicję preprocesora. Czyli coś, co wykonuje się jak sama nazwa mówi przed właściwym wykonaniem programu. Pre- Przed. Więc już wiemy, że wykonuje coś przed. A co znaczy pozostała część ? Słówko include oznacza po angielsku dołącz. Co dołącz ? To co znajduje się w dalszej części instrukcji. Dalej znajdujemy <iostream>. Co to więc oznacza ? Dołączenie biblioteki iostream. Czym jest bibliote...