C++. Sztuka programowania - Helion
Tytuł oryginału: The Art of C++
Tłumaczenie: Małgorzata Koziej (rozdz. 2), Marcin Miklas (rozdz. 2, 7, 9), Marcin Samodulski (rozdz. 1, 3 - 6, 8)
ISBN: 83-7361-679-9
stron: 384, Format: B5, okładka: miękka
Data wydania: 2004-11-24
Księgarnia: Helion
Cena książki: 39,90 zł
Poznaj profesjonalne techniki programistyczne
C++ to jeden z najpopularniejszych języków programowania. Ma zwięzłą i elegancką składnię, czytelny i logiczny model obiektów i starannie opracowane biblioteki. Jego możliwości dają programiście niemal nieograniczoną kontrolę nad komputerem. Jednak sprawne i efektywne programowanie w C++ to prawdziwa sztuka. Wymaga staranności, dokładnego zaplanowania tworzonej aplikacji oraz wiedzy o funkcjach i mechanizmach, jakie można zastosować.
Książka "C++. Sztuka programowania" przedstawia profesjonalne sposoby tworzenia aplikacji w języku C++. Nie opisuje podstaw języka - skupia się na tworzeniu praktycznych aplikacji z wykorzystaniem profesjonalnych technik programistycznych. Wykonując zawarte w książce przykłady, rozwiążesz różne zadania programistyczne i osiągniesz biegłość w posługiwaniu się językiem C++.
- Szablony STL, biblioteki i model obiektowy języka C++
- Mechanizm odzyskiwania pamięci
- Wykorzystanie wielowątkowości w aplikacjach
- Eksperymentalne elementy języka C++
- Aplikacje internetowe w C++
- Techniki sztucznej inteligencji
- Tworzenie własnego interpretera C++
O autorze:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
Spis treści
C++. Sztuka programowania -- spis treści
O Autorze (9)
Wstęp (11)
Rozdział 1. Potęga C++ (13)
- Zwięzła, lecz bogata składnia (14)
- Potężne biblioteki (14)
- Biblioteka szablonów STL (15)
- Programista ma władzę (16)
- Precyzyjne sterowanie (17)
- Przeciążanie operatorów (17)
- Przejrzysty, zwięzły model obiektowy (18)
- Dziedzictwo C++ (18)
Rozdział 2. Prosty mechanizm odzyskiwania pamięci dla języka C++ (21)
- Porównanie dwóch metod zarządzania pamięcią (22)
- Plusy i minusy ręcznego zarządzania pamięcią (23)
- Plusy i minusy mechanizmu odzyskiwania pamięci (24)
- Możesz mieć obie metody (25)
- Tworzenie mechanizmu odzyskiwania pamięci w języku C++ (25)
- Zrozumienie problemu (26)
- Wybór algorytmu odzyskiwania pamięci (26)
- Zliczanie referencji (27)
- Znacz i zamiataj (27)
- Kopiowanie (27)
- Który algorytm wybrać? (28)
- Implementowanie mechanizmu odzyskiwania pamięci (28)
- WielowÄ…tkowy czy nie? (29)
- Kiedy odzyskiwać pamięć? (29)
- Co z auto_ptr? (30)
- Prosty mechanizm odzyskiwania pamięci w C++ (31)
- Omówienie klas mechanizmu odzyskiwania pamięci (41)
- GCPtr szczegółowo (42)
- Zmienne składowe klasy GCPtr (43)
- Funkcja findPtrInfo() (44)
- Definicja typu GCiterator (44)
- Konstruktor klasy GCPtr (44)
- Destruktor klasy GCPtr (46)
- Odzyskiwanie pamięci za pomocą funkcji collect() (46)
- Przeciążone operatory przypisania (48)
- Konstruktor kopiujÄ…cy klasy GCPtr (50)
- Operatory wskaźnikowe i funkcja konwertująca (51)
- Funkcje begin() i end() (52)
- Funkcja shutdown() (53)
- Dwie funkcje pomocnicze (53)
- Klasa GCInfo (54)
- Klasa Iter (55)
- Jak używać klasy GCPtr? (57)
- Obsługa wyjątków alokacji pamięci (58)
- Bardziej interesujący przykład (59)
- Alokowanie i porzucanie obiektów (61)
- Alokowanie tablic (63)
- Użycie GCPtr z typami klasowymi (65)
- Większy program demonstracyjny (67)
- Testowanie obciążenia (72)
- Kilka ograniczeń (74)
- Pomysły do wypróbowania (75)
Rozdział 3. Wielowątkowość w C++ (77)
- Czym jest wielowątkowość? (78)
- Wielowątkowość zmienia architekturę programu (78)
- Dlaczego język C++ nie ma wbudowanej obsługi mechanizmu wielowątkowości? (79)
- Jaki system operacyjny i kompilator wybrać? (80)
- Przegląd funkcji obsługi wątków w Windows (81)
- Tworzenie i zatrzymywanie wÄ…tku (81)
- Inne funkcje obsługi wątków dostępne w Visual C++ (82)
- Wstrzymywanie i wznawianie wÄ…tku (84)
- Zmiana priorytetu wÄ…tku (84)
- Pobieranie uchwytu głównego wątku (86)
- Zagadnienie synchronizacji (86)
- Tworzenie panelu kontrolnego wątków (90)
- Panel kontrolny wÄ…tku (91)
- Panel kontrolny wÄ…tku pod lupÄ… (95)
- Prezentacja działania panelu kontrolnego (101)
- Wielowątkowy mechanizm odzyskiwania pamięci (106)
- Dodatkowe zmienne składowe (107)
- Konstruktor wielowÄ…tkowej klasy GCPtr (107)
- WyjÄ…tek TimeOutExc (109)
- WielowÄ…tkowy destruktor klasy GCPtr (110)
- Funkcja gc() (110)
- Funkcja isRunning() (111)
- Synchronizacja dostępu do listy gclist (111)
- Dwie inne zmiany (112)
- Kompletny kod wielowątkowego mechanizmu odzyskiwania pamięci (112)
- Użycie wielowątkowego mechanizmu odzyskiwania pamięci (123)
- Pomysły do wypróbowania (128)
Rozdział 4. Rozszerzanie języka C++ (129)
- Dlaczego należy użyć translatora? (129)
- Eksperymentalne słowa kluczowe (131)
- Pętla foreach (131)
- Wyrażenie cases (132)
- Operator typeof (133)
- Pętla repeat-until (134)
- Translator eksperymentalnych elementów języka C++ (135)
- Użycie translatora (143)
- Jak działa translator? (144)
- Deklaracje globalne (144)
- Funkcja main() (145)
- Funkcje gettoken() i skipspaces() (146)
- Przekształcanie pętli foreach (149)
- Przekształcanie wyrażenia cases (152)
- Przekształcanie operatora typeof (154)
- Przekształcanie pętli repeat-until (155)
- Program demonstracyjny (157)
- Pomysły do wypróbowania (163)
Rozdział 5. Program do ściągania plików z internetu (165)
- Biblioteka WinINet (166)
- Podsystem programu do ściągania pliku z internetu (167)
- Ogólny opis działania (171)
- Funkcja download() (172)
- Funkcja ishttp() (177)
- Funkcja httpverOK() (178)
- Funkcja getfname() (179)
- Funkcja openfile() (179)
- Funkcja update() (180)
- Plik nagłówkowy podsystemu do ściągania plików (181)
- Program prezentujący działanie podsystemu do ściągania plików (181)
- Program do ściągania plików z graficznym interfejsem użytkownika (183)
- Kod programu WinDL (183)
- Jak działa program WinDL? (188)
- Pomysły do wypróbowania (190)
Rozdział 6. Obliczenia finansowe w C++ (191)
- Plan spłaty pożyczki (192)
- Obliczanie przyszłej wartości lokaty (193)
- Obliczanie początkowej wartości inwestycji wymaganej do otrzymania pożądanej przyszłej wartości (195)
- Obliczanie początkowej wartości inwestycji wymaganej do otrzymania określonych wypłat (196)
- Obliczanie maksymalnej wielkości regularnej wypłaty z danej lokaty (198)
- Obliczanie wartości pozostałego kredytu (200)
- Pomysły do wypróbowania (201)
Rozdział 7. Rozwiązywanie problemów metodami sztucznej inteligencji (203)
- Reprezentacja i terminologia (204)
- Eksplozje kombinatoryczne (205)
- Strategie przeszukiwania (207)
- Ocenianie strategii przeszukiwania (207)
- Problem (208)
- Reprezentacja graficzna (208)
- Struktura FlightInfo i klasa Search (209)
- Przeszukiwanie w głąb (211)
- Funkcja match() (216)
- Funkcja find() (217)
- Funkcja findroute() (218)
- Wyświetlanie trasy (219)
- Analiza przeszukiwania w głąb (220)
- Przeszukiwanie wszerz (220)
- Analiza przeszukiwania wszerz (223)
- Dodawanie heurystyk (223)
- Przeszukiwania wspinaczkowe (224)
- Analiza przeszukiwania wspinaczkowego (228)
- Przeszukiwanie najmniejszego kosztu (229)
- Analiza przeszukiwania najmniejszego kosztu (231)
- Znajdowanie wielu rozwiązań (231)
- Usuwanie ścieżki (231)
- Usuwanie wierzchołków (232)
- Szukanie optymalnego rozwiÄ…zania (238)
- Wracamy do zgubionych kluczy (244)
- Pomysły do wypróbowania (247)
Rozdział 8. Tworzenie własnego kontenera STL (249)
- Krótkie omówienie biblioteki STL (250)
- Kontenery (250)
- Algorytmy (251)
- Iteratory (251)
- Inne składniki biblioteki STL (251)
- Wymagania stawiane definiowanemu kontenerowi (252)
- Wymagania ogólne (252)
- Dodatkowe wymagania dla kontenerów sekwencyjnych (254)
- Dodatkowe wymagania dla kontenerów asocjacyjnych (254)
- Tworzenie kontenera tablicy dynamicznej ze zmiennymi indeksami (255)
- Jak działa tablica RangeArray? (255)
- Kompletna klasa RangeArray (257)
- Klasa RangeArray pod lupÄ… (266)
- Kilka programów wykorzystujących tablicę RangeArray (279)
- Pomysły do wypróbowania (288)
Rozdział 9. Miniinterpreter języka C++ (289)
- Interpretery kontra kompilatory (289)
- Opis ogólny interpretera Mini C++ (290)
- Charakterystyka interpretera Mini C++ (291)
- Ograniczenia interpretera Mini C++ (293)
- Nieformalna teoria języka C++ (294)
- Wyrażenia języka C++ (295)
- Definiowanie wyrażenia (295)
- Parser wyrażeń (297)
- Kod źródłowy parsera (297)
- Wyodrębnianie elementów leksykalnych z kodu źródłowego (309)
- Wyświetlanie błędów składniowych (314)
- Obliczanie wyrażenia (315)
- Interpreter Mini C++ (317)
- Funkcja main() (334)
- Wstępny przegląd kodu (335)
- Funkcja interp() (339)
- Obsługa zmiennych lokalnych (341)
- Wywoływanie funkcji zdefiniowanych przez użytkownika (343)
- Przypisywanie wartości zmiennym (345)
- Wykonywanie instrukcji if (347)
- Instrukcje switch i break (348)
- Przetwarzanie pętli while (350)
- Przetwarzanie pętli do-while (351)
- Pętla for (353)
- Obsługa instrukcji cin i cout (354)
- Biblioteka funkcji interpretera Mini C++ (356)
- Plik nagłówkowy mccommon.h (358)
- Kompilacja i konsolidacja interpretera Mini C++ (360)
- Demonstrowanie działania interpretera Mini C++ (360)
- Udoskonalanie interpretera Mini C++ (368)
- Rozszerzanie interpretera Mini C++ (369)
- Dodawanie nowych elementów języka C++ (369)
- Dodawanie elementów pomocniczych (370)
Skorowidz (371)