C++ Sztuka programowania.pdf
(
342 KB
)
Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW
Y ROZDZIA£
C++. Sztuka
SPIS TRECI
programowania
KATALOG KSI¥¯EK
Autor: Herbert Schildt
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
Tytu³ orygina³
u:
The Art of C++
Format: B5, stron: 384
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Poznaj profesjonalne techniki programistyczne
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¹tkowoci w aplikacjach
• Eksperymentalne elementy jêzyka C++
• Aplikacje internetowe w C++
• Techniki sztucznej inteligencji
• Tworzenie w³asnego interpretera C++
O Autorze:
Herbert Schildt
jest jednym z najpoczytniejszych autorów ksi¹¿ek powiêconych
programowaniu, konkretnie jêzykom C, C++, Java i C#. By³ cz³onkiem komitetu
ANSI/ISO, który dokona³ standaryzacji jêzyka C++. Jego ksi¹¿ki powiêcone
programowaniu zosta³y sprzedane w 3 milionach egzemplarzy na ca³ym wiecie
i przet³umaczone na kilkanacie jêzyków.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorze ..........................................................................................9
Wstp .............................................................................................11
Rozdział 1. Potga C++.....................................................................................13
Zwizła, lecz bogata składnia.......................................................................................... 14
Potne biblioteki............................................................................................................ 14
Biblioteka szablonów STL .............................................................................................. 15
Programista ma władz.................................................................................................... 16
Precyzyjne sterowanie..................................................................................................... 17
Przeci&anie operatorów.................................................................................................. 17
Przejrzysty, zwizły model obiektowy ............................................................................ 18
Dziedzictwo C++............................................................................................................. 18
Rozdział 2. Prosty mechanizm odzyskiwania pamici dla jzyka C++...................21
Porównanie dwóch metod zarz&dzania pamici&............................................................. 22
Plusy i minusy rcznego zarz&dzania pamici&......................................................... 23
Plusy i minusy mechanizmu odzyskiwania pamici.................................................. 24
Moesz mie1 obie metody......................................................................................... 25
Tworzenie mechanizmu odzyskiwania pamici w jzyku C++ ....................................... 25
Zrozumienie problemu .............................................................................................. 26
Wybór algorytmu odzyskiwania pamici ........................................................................ 26
Zliczanie referencji.................................................................................................... 27
Znacz i zamiataj ........................................................................................................ 27
Kopiowanie ............................................................................................................... 27
Który algorytm wybra1?............................................................................................ 28
Implementowanie mechanizmu odzyskiwania pamici............................................. 28
Wielow&tkowy czy nie? ............................................................................................ 29
Kiedy odzyskiwa1 pami1?....................................................................................... 29
Co z auto_ptr? ........................................................................................................... 30
Prosty mechanizm odzyskiwania pamici w C++ ........................................................... 31
Omówienie klas mechanizmu odzyskiwania pamici ............................................... 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
4
C++. Sztuka programowania
Odzyskiwanie pamici 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 uywa1 klasy GCPtr? ................................................................................................ 57
Obsługa wyj&tków alokacji pamici.......................................................................... 58
Bardziej interesuj&cy przykład .................................................................................. 59
Alokowanie i porzucanie obiektów........................................................................... 61
Alokowanie tablic ..................................................................................................... 63
Uycie GCPtr z typami klasowymi ........................................................................... 65
Wikszy program demonstracyjny ............................................................................ 67
Testowanie obci&enia .............................................................................................. 72
Kilka ograniczeC ....................................................................................................... 74
Pomysły do wypróbowania ............................................................................................. 75
Rozdział 3. Wielow%tkowo&' w C++...................................................................77
Czym jest wielow&tkowoD1? ........................................................................................... 78
Wielow&tkowoD1 zmienia architektur programu ..................................................... 78
Dlaczego jzyk C++ nie ma wbudowanej obsługi mechanizmu wielow&tkowoDci? ....... 79
Jaki system operacyjny i kompilator wybra1? ................................................................. 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 dostpne 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 pamici ....................................................... 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 dostpu do listy gclist .................................................................... 111
Dwie inne zmiany ................................................................................................... 112
Kompletny kod wielow&tkowego mechanizmu odzyskiwania pamici .................. 112
Uycie wielow&tkowego mechanizmu odzyskiwania pamici................................ 123
Pomysły do wypróbowania ........................................................................................... 128
Rozdział 4. Rozszerzanie jzyka C++................................................................129
Dlaczego naley uy1 translatora?................................................................................. 129
Eksperymentalne słowa kluczowe................................................................................. 131
Ptla foreach............................................................................................................ 131
Wyraenie cases...................................................................................................... 132
Spis treci
5
Operator typeof ....................................................................................................... 133
Ptla repeat-until ..................................................................................................... 134
Translator eksperymentalnych elementów jzyka C++ ................................................. 135
Uycie translatora.......................................................................................................... 143
Jak działa translator? ..................................................................................................... 144
Deklaracje globalne................................................................................................. 144
Funkcja main() ........................................................................................................ 145
Funkcje gettoken() i skipspaces()............................................................................ 146
Przekształcanie ptli foreach................................................................................... 149
Przekształcanie wyraenia cases ............................................................................. 152
Przekształcanie operatora typeof............................................................................. 154
Przekształcanie ptli 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 Dci&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 Dci&gania plików ...................................................... 181
Program prezentuj&cy działanie podsystemu do Dci&gania plików ................................ 181
Program do Dci&gania plików z graficznym interfejsem uytkownika........................... 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 poyczki...................................................................................................... 192
Obliczanie przyszłej wartoDci lokaty ............................................................................. 193
Obliczanie pocz&tkowej wartoDci inwestycji
wymaganej do otrzymania po&danej przyszłej wartoDci............................................ 195
Obliczanie pocz&tkowej wartoDci inwestycji
wymaganej do otrzymania okreDlonych wypłat .......................................................... 196
Obliczanie maksymalnej wielkoDci regularnej wypłaty z danej lokaty.......................... 198
Obliczanie wartoDci 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
6
C++. Sztuka programowania
WyDwietlanie 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&zaC ....................................................................................... 231
Usuwanie Dcieki..................................................................................................... 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 jzyka 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 jzyka C++ ..................................................................................... 294
Wyraenia jzyka C++............................................................................................ 295
Definiowanie wyraenia.......................................................................................... 295
Parser wyraeC .............................................................................................................. 297
Kod ?ródłowy parsera ............................................................................................. 297
Wyodrbnianie elementów leksykalnych z kodu ?ródłowego................................. 309
WyDwietlanie błdów składniowych ....................................................................... 314
Obliczanie wyraenia .............................................................................................. 315
Interpreter Mini C++ ..................................................................................................... 317
Funkcja main() ........................................................................................................ 334
Wstpny przegl&d kodu........................................................................................... 335
Funkcja interp()....................................................................................................... 339
Obsługa zmiennych lokalnych ................................................................................ 341
Wywoływanie funkcji zdefiniowanych przez uytkownika .................................... 343
Przypisywanie wartoDci zmiennym ......................................................................... 345
Wykonywanie instrukcji if ...................................................................................... 347
Plik z chomika:
Ravel25
Inne pliki z tego folderu:
Asembler dla procesorow Intel Vademecum profesjonalisty.pdf
(400 KB)
Asembler cwiczenia praktyczne.pdf
(358 KB)
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe.pdf
(829 KB)
Architektura oprogramowania Metody oceny oraz analiza przypadkow.pdf
(429 KB)
Aplikacje w Visual C++ 2005 Przyklady.pdf
(296 KB)
Inne foldery tego chomika:
(X) HTML
algorytmy i struktury danych
asembler
C++
Core JAVA2 Podstawy
Zgłoś jeśli
naruszono regulamin