POLECAMY
W tę książkę warto zainwestować, ponieważ ma ona wartość ponadczasową, podobnie jak standard ISO, na którym jest oparta. Można ją polecić jako źródło odniesienia dla języka C++. Warto ją czytać i poznawać zawarte w niej krótkie, a treściwe wprowadzenia teoretyczne i teksty źródłowe oraz omówienia programów.
Zrozumienie podstawowych koncepcji i opanowanie konstrukcji języka C++ nie wymaga znajomości żadnego innego języka programowania. Jeżeli ktoś chce poznać i opanować warsztat programowania obiektowego, to książka „Język C++. Standard ISO w praktyce” znakomicie posłuży temu celowi. W tekstach i omówieniach około 200 programów można znaleźć wiele wskazówek dotyczących pragmatyki, tj. możliwości i umiejętności stosowania różnych konstrukcji językowych w tych samych lub odmiennych kontekstach, a także użyteczne idiomy językowe. Wykład wywiedziony ze standardu nie podlega chwilowym modom, związanym z różnymi środowiskami programistycznymi, a więc jest niezależny od aktualnych interesów producentów oprogramowania narzędziowego.
Książka prezentuje syntaktykę, semantykę i pragmatykę hybrydowego, proceduralno-obiektowego języka programowania C++. Prezentowane treści są zgodne ze standardem ISO z roku 2003. Omawiane w kolejnych rozdziałach konstrukcje językowe opisano zwięźle, jednak wystarczająco dokładnie. Konstrukcje te starano się opisywać nie w formie suchych, sformalizowanych definicji, lecz semantycznie bogatszych i lepiej zrozumiałych definicji nieformalnych. Przeczytanie książki umożliwia poznanie języka C++ pod warunkiem, że skompilujemy i wykonamy (łatwe do wydzielenia z tekstu) zamieszczone w niej programy. Do przetwarzania programów można wykorzystać zarówno kompilator wywoływany z wiersza polecenia (np. GNU g++ w środowisku Unix/Linux), jak i jedno z tzw. środowisk zintegrowanych (np. Borland bc3.1, bc5.01, bcb6, Eclipse, VIDE, Dev-C++).
Wykład jest prowadzony w sposób systematyczny: od podstawowych elementów i konstrukcji języka którym towarzyszą proste programy, przez konstrukcje wynikające z paradygmatu proceduralnego, kończąc na specyficznych własnościach klas i obiektów, takich jak dziedziczenie, polimorfizm, parametryzacja klas i funkcji, dynamiczna identyfikacja typów. Warto również zwrócić uwagę na omawiane w książce objęte standardem ISO tematy, takie jak obsługa wyjątków, tworzenie obiektów funkcyjnych, elementy biblioteki STL oraz przestrzenie nazw.
Rok wydania | 2008 |
---|---|
Liczba stron | 272 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-15316-8 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
POLECAMY
Ciekawe propozycje
Język w zachowaniach społecznych
do koszyka
"Język Artystyczny". T. 15: Język(i)...
do koszyka
Język jako świadectwo kultury. Język....
do koszyka
Spis treści
Wprowadzenie | 7 |
1. Podstawowe elementy i konstrukcje | 9 |
1.1. Paradygmat proceduralny | 9 |
1.2. Paradygmat obiektowy | 10 |
1.3. Konstrukcja i przetwarzanie programu | 11 |
1.3.1. Pierwszy program | 13 |
1.4. Jednostki leksykalne programu | 14 |
1.4.1. Identyfikatory | 15 |
1.4.2. Komentarze | 15 |
1.4.3. Słowa kluczowe i operatory | 15 |
1.5. Typy danych | 16 |
1.5.1. Typy wbudowane | 16 |
1.5.2. Typ wyliczeniowy | 18 |
1.5.3. Typ void | 18 |
1.6. Stałe i zmienne | 19 |
1.6.1. Stałe i zmienne całkowite | 20 |
1.6.2. Stałe i zmienne znakowe | 21 |
1.6.3. Stałe rzeczywiste | 23 |
1.6.4. Stałe napisowe | 24 |
1.7. Operatory, wyrażenia, instrukcje | 25 |
1.7.1. Operatory | 25 |
1.7.2. Priorytety operatorów i kolejność obliczeń | 27 |
1.7.3. Operator zasięgu | 28 |
1.7.4. Wyrażenia | 29 |
1.8. Konwersja (rzutowanie) typów | 31 |
1.8.1. Konwersje jawne | 32 |
2. Instrukcje i bloki | 35 |
2.1. Instrukcje wyrażeniowe | 35 |
2.2. Instrukcje wyboru | 38 |
2.2.1. Instrukcja if | 38 |
2.2.2. Instrukcja switch | 39 |
2.3. Instrukcje powtarzania (pętle) | 41 |
2.3.1. Instrukcja pętli while | 41 |
2.3.2. Instrukcja pętli do-while | 42 |
2.3.3. Instrukcja pętli for | 43 |
2.3.4. Modyfikacje instrukcji for | 45 |
2.4. Instrukcje skoku | 48 |
2.5. Dyrektywy preprocesora | 49 |
2.5.1. Dyrektywy predefiniowane | 49 |
3. Wskaźniki i tablice | 53 |
3.1. Tablice | 53 |
3.1.1. Tablice jednowymiarowe | 53 |
3.1.2. Tablice wielowymiarowe | 54 |
3.2. Wskaźniki | 56 |
3.2.1. Wskaźnik do typu void | 58 |
3.2.2. Wskaźniki do tablic | 59 |
3.2.3. Wskaźniki i tablice znaków | 62 |
3.2.4. Wskaźniki stałe i wskaźniki do stałych | 64 |
3.3. Dynamiczna alokacja pamięci | 65 |
3.3.1. Tablice dynamiczne | 67 |
4. Funkcje | 69 |
4.1. Prototypy funkcji | 69 |
4.2. Blok funkcji | 70 |
4.3. Argumenty funkcji | 71 |
4.3.1. Przekazywanie przez wartość | 71 |
4.3.2. Przekazywanie przez wskaźnik | 72 |
4.3.3. Przekazywanie przez referencję | 73 |
4.3.4. Domyślne wartości argumentów | 74 |
4.3.5. Przekazywanie tablic | 75 |
4.4. Funkcje rozwijalne | 78 |
4.5. Funkcja main | 80 |
4.5.1. Komunikacja funkcji main z otoczeniem | 80 |
4.6. Algorytmy i funkcje rekurencyjne | 81 |
4.7. Własności rekurencji | 82 |
4.7.1. Poprawność algorytmów rekurencyjnych | 82 |
4.8. Przykłady algorytmów i programów rekurencyjnych | 83 |
4.9. Rekurencja a iteracja | 89 |
4.9.1. Rekurencja – podsumowanie | 90 |
4.10. Przeciążanie nazw funkcji | 90 |
4.10.1. Dopasowanie argumentów | 91 |
4.10.2. Adresy funkcji przeciążonych | 93 |
4.11. Wskaźniki do funkcji | 93 |
4.12. Synonimy nazw typów | 96 |
4.12.1. Deklaracja typedef | 96 |
4.13. Zasięg nazw i klasy pamięci | 98 |
4.13.1. Zmienne globalne i lokalne | 98 |
4.13.2. Zmienne i funkcje statyczne | 99 |
5. Klasy i obiekty | 102 |
5.1. Deklaracja i definicja klasy | 102 |
5.1.1. Funkcje składowe i wskaźnik this | 106 |
5.2. Statyczne elementy klasy | 107 |
5.3. Konstruktory i destruktory | 110 |
5.3.1. Własności konstruktorów i destruktorów | 112 |
5.3.2. Konstruktory z argumentami domyślnymi | 114 |
5.4. Funkcje i klasy zaprzyjaźnione | 115 |
5.5. Przeciążanie operatorów | 117 |
5.5.1. Zaprzyjaźniony operator << | 122 |
5.6. Struktury i unie jako klasy | 124 |
5.6.1. Struktury | 124 |
5.6.2. Pola bitowe struktur | 125 |
5.6.3. Unie | 127 |
5.7. Kompozycje klas i obiektów | 128 |
5.8. Szablony klas i funkcji | 131 |
5.8.1. Szablony klas | 133 |
5.8.2. Szablony funkcji | 134 |
5.8.3. Szablony w standardowej bibliotece C++ | 135 |
6. Operacje na obiektach | 140 |
6.1. Obiekty i funkcje stałe | 140 |
6.1.1. Specyfikator mutable | 141 |
6.2. Kopiowanie obiektów | 142 |
6.3. Przekazywanie obiektów do/z funkcji | 145 |
6.4. Konwersje obiektów klas | 149 |
6.4.1. Specyfikator explicit | 150 |
6.5. Tablice obiektów | 152 |
6.6. Wskaźniki do elementów obiektu | 157 |
6.6.1. Wskaźniki do zmiennych składowych obiektu | 157 |
6.6.2. Wskaźniki do funkcji składowych obiektu | 158 |
7. Mechanizmy dziedziczenia | 160 |
7.1. Hierarchie dziedziczenia | 160 |
7.2. Dziedziczenie pojedyncze | 163 |
7.2.1. Konstruktory i destruktory domyślne | 164 |
7.2.2. Konstruktory i destruktory definiowane | 165 |
7.3. Dziedziczenie mnogie | 169 |
7.3.1. Wirtualne klasy bazowe | 173 |
8. Polimorfizm i funkcje wirtualne | 177 |
8.1. Wskaźniki i referencje w hierarchii klas | 177 |
8.2. Funkcje wirtualne | 179 |
8.3. Implementacja funkcji wirtualnych | 182 |
8.4. Wirtualne destruktory | 183 |
8.4.1. Destruktory w hierarchii klas | 184 |
8.5. Zasięg i reguła dominacji | 187 |
8.6. Klasy abstrakcyjne i funkcje czysto wirtualne | 191 |
9. Strumienie i pliki | 194 |
9.1. Klasy strumieni wejścia/wyjścia | 195 |
9.1.1. Funkcje składowe klas strumieniowych | 197 |
9.2. Formatowanie wejścia i wyjścia | 199 |
9.2.1. Manipulatory | 202 |
9.3. Pliki | 204 |
9.3.1. Plik jako parametr funkcji main | 207 |
9.3.2. Dostęp swobodny | 208 |
9.3.3. Pliki binarne | 210 |
10. Obsługa wyjątków | 214 |
10.1. Model obsługi wyjątków w języku C++. | 215 |
10.1.1. Deklaracje wyjątków | 216 |
10.2. Wyjątek jako obiekt | 218 |
10.3. Sygnalizacja wyjątków w deklaracji funkcji | 220 |
10.4. Propagacja wyjątków | 222 |
10.5. Wyjątki i zasoby systemowe | 224 |
10.6. Wyjątki w operacjach new i delete | 225 |
10.6.1. Operatory new | 226 |
10.6.2. Operatory delete | 227 |
10.7. Wyjątki standardowe | 228 |
10.8. Nadużywanie wyjątków | 228 |
11. Dynamiczna kontrola typów | 230 |
11.1. Konwersja dynamiczna | 230 |
11.2. Dynamiczna identyfikacja typów | 233 |
11.3. Alternatywa – funkcje wirtualne | 236 |
11.4. Nowa notacja dla konwersji | 236 |
12. Obiekty funkcyjne – funktory | 239 |
12.1. Funkcje i funktory | 239 |
12.2. Przeciążenie operatora wywołania funkcji | 241 |
12.2.1. Funktory ze wskaźnikami do funkcji zewnętrznych | 242 |
12.2.2. Funktory z jawnym wywołaniem funkcji | 244 |
12.3. Funktory i wskaźniki do funkcji składowych klasy | 245 |
12.4. Funktory w hierarchii dziedziczenia | 246 |
12.5. Funktory z szablonami funkcji | 248 |
12.6. Szablony funktorów | 249 |
12.6.1. Obiekty funkcyjne w bibliotece STL | 250 |
12.7. Komentarze i wnioski | 252 |
13. Przestrzenie nazw | 254 |
13.1. Przestrzeń nazw biblioteki standardowej C++ | 254 |
13.2. Odwołanie przez jawną kwalifikację | 256 |
13.3. Deklaracja użycia (deklaracja using) | 258 |
13.4. Rozszerzenia przestrzeni nazw | 260 |
13.5. Synonimy przestrzeni nazw | 260 |
13.6. Polecenie otwarcia (dyrektywa using) | 261 |
13.7. Przestrzenie nienazwane | 263 |
13.7.1. Eliminacja słowa kluczowego static | 265 |
Dodatek A. Zbiór znaków ASCII | 266 |
Znaczenie znaków sterujących | 267 |
Literatura | 268 |
Skorowidz | 269 |