Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00470 008228 20948834 na godz. na dobę w sumie
Wprowadzenie do C++. Efektywne nauczanie. Wydanie III - ebook/pdf
Wprowadzenie do C++. Efektywne nauczanie. Wydanie III - ebook/pdf
Autor: Liczba stron: 680
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-6729-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ - programowanie
Porównaj ceny (książka, ebook (-50%), audiobook).

C++ wyjątkowo dobrze nadaje się do nauki jako 'pierwszy poważny język programowania', a równocześnie jest znakomitym, wszechstronnym narzędziem do tworzenia nowoczesnych aplikacji. Programowanie w nim wymaga nieco wysiłku, ale pozwala zarówno szybko przyswoić najważniejsze paradygmaty informatyki, jak i wdrożyć się w pisanie kodu zgodne z dobrymi praktykami. Przy tym C++ ma cechy nowoczesnego języka programowania, a jego możliwości są poszerzane dzięki bibliotekom. Aby adept sztuki programowania mógł skorzystać z tych wszystkich zalet, potrzebuje pomocy dobrego nauczyciela lub dobrego podręcznika. Tylko w ten sposób uniknie typowych błędów popełnianych na skutek niewystarczającego zrozumienia podstaw programowania i najważniejszych koncepcji programistycznych.

Oto polska edycja popularnego podręcznika opartego na naukowych podstawach skutecznego uczenia. To znakomite wprowadzenie do podstawowych technik programowania i umiejętności projektowania pozwala łatwo, a przy tym dogłębnie opanować elementarne pojęcia. W przystępny sposób omawia najistotniejsze kwestie działania algorytmów i rodzaje struktur danych. Krok po kroku przeprowadza czytelnika od podstaw do bardziej zaawansowanych tematów związanych ze współczesnymi aplikacjami, takich jak GUI i programowanie XML. Poszczególne koncepcje zostały tu wyjaśnione z wykorzystaniem trafnie dobranych schematów i grafik. Nie zabrakło też wskazówek, przykładów i obszernych fragmentów świetnie napisanego kodu, które ułatwiają naukę, podobnie jak liczne ćwiczenia i studia przypadków.

W tej książce między innymi:

Bądź profesjonalistą od pierwszej linii kodu!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Big C++: Late Objects, 3rd Edition Tłumaczenie: Krzysztof Bąbol ISBN: 978-83-283-6728-9 Copyright © 2018, 2012, 2009 John Wiley Sons, Inc. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise without either the prior written permission of the Publisher. Translation copyright © 2021 by Helion SA All rights reserved. This translation published under license with the original publisher John Wiley Sons, Inc. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/wpcpp3 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/wpcpp3.zip Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści ELEMENTY KSIĄŻKI ..................................................................................................... 16 PRZEDMOWA ............................................................................................................ 23 IAS IAS CPB WDP 1. WPROWADZENIE ....................................................................................35 1.1. Czym jest programowanie? ......................................................................... 35 1.2. Anatomia komputera ................................................................................. 36 Komputery są wszędzie ..............................................................................38 1.3. Kod maszynowy i języki programowania .................................................... 39 Organizacje normalizacyjne .......................................................................40 1.4. Zapoznanie się ze środowiskiem programowania ........................................ 41 Kopie zapasowe .........................................................................................44 1.5. Analiza pierwszego programu ..................................................................... 45 Pomijanie średników .................................................................................47 Sekwencje ucieczki ....................................................................................48 1.6. Błędy ......................................................................................................... 49 Błędna pisownia wyrazów ..........................................................................50 1.7. Rozwiązywanie problemów: projektowanie algorytmów ............................. 50 Koncepcja algorytmu .................................................................................51 1.7.1. Algorytm rozwiązywania problemu stopy zwrotu .......................................51 1.7.2. 1.7.3. Pseudokod .................................................................................................52 1.7.4. Od algorytmów do programów ..................................................................53 JTZ Opisywanie algorytmu za pomocą pseudokodu .........................................54 P Napisanie algorytmu układania płytek podłogowych ..................................55 Podsumowanie rozdziału ...................................................................................... 57 CPB TS Kup książkęPoleć książkę 4 Spis treści 2. PODSTAWOWE TYPY DANYCH ..............................................................59 2.1. Zmienne .................................................................................................... 59 2.1.1. Definicje zmiennych ..................................................................................60 2.1.2. Typy liczbowe ............................................................................................61 2.1.3. Nazwy zmiennych .....................................................................................62 Instrukcja przypisania .................................................................................63 2.1.4. 2.1.5. Stałe ..........................................................................................................65 Komentarze ...............................................................................................65 2.1.6. CPB Używanie niezdefiniowanych zmiennych ...................................................66 CPB Używanie niezainicjowanych zmiennych ...................................................66 WDP Wybieraj opisowe nazwy zmiennych .........................................................67 WDP Nie używaj sekretnych numerów ...............................................................67 TS Typy liczbowe w C++ ..............................................................................68 TS Zakresy i precyzja liczb ..............................................................................69 TS Definiowanie zmiennych ze słowem auto ..................................................69 2.2. Arytmetyka ................................................................................................ 69 2.2.1. Operatory arytmetyczne ............................................................................69 2.2.2. Inkrementacja i dekrementacja ..................................................................70 2.2.3. Dzielenie całkowite i reszta z dzielenia ......................................................70 Konwertowanie liczb zmiennoprzecinkowych na całkowite .......................71 2.2.4. Potęgi i pierwiastki .....................................................................................72 2.2.5. CPB Niezamierzone dzielenie całkowite ............................................................74 CPB Niezamknięte nawiasy ...............................................................................74 CPB Zapominanie o plikach nagłówkowych ......................................................75 CPB Błędy zaokrąglenia .....................................................................................76 WDP Spacje w wyrażeniach ................................................................................76 TS Rzutowania ................................................................................................77 TS Połączenie przypisania i działań arytmetycznych ........................................77 IAS Błąd jednostki zmiennoprzecinkowej procesora Pentium ...........................77 2.3. Wejście i wyjście ........................................................................................ 79 2.3.1. Wejście ......................................................................................................79 2.3.2. Formatowanie wyjścia ................................................................................80 2.4. Rozwiązywanie problemów: najpierw zrób to ręcznie ................................ 82 Obliczanie czasu podróży ..........................................................................83 Przeprowadzanie obliczeń .........................................................................83 Obliczenie kosztu znaczków pocztowych ..................................................86 2.5. Ciągi .......................................................................................................... 86 Typ string ...................................................................................................86 2.5.1. 2.5.2. Łączenie ciągów ........................................................................................87 2.5.3. Wprowadzanie ciągów ..............................................................................87 2.5.4. Funkcje ciągów ..........................................................................................88 IAS Alfabety międzynarodowe i zestaw Unicode ..............................................91 Podsumowanie rozdziału ...................................................................................... 92 P JTZ P Kup książkęPoleć książkę Spis treści 5 3.1. CPB CPB WDP TS JTZ P IAS 3. DECYZJE ...................................................................................................93 Instrukcja if ................................................................................................ 93 CPB Średnik po warunku if ................................................................................96 WDP Układ nawiasów klamrowych .....................................................................96 WDP Zawsze używaj nawiasów klamrowych .......................................................97 WDP Wcięcia .....................................................................................................97 WDP Unikaj duplikowania kodu w gałęziach ......................................................98 TS Operator warunkowy .................................................................................99 3.2. Porównywanie liczb oraz znaków ............................................................... 99 Mylenie operatora = z == ......................................................................101 Dokładne porównywanie liczb zmiennoprzecinkowych ...........................102 Doprowadź do kompilacji z brakiem ostrzeżeń ........................................103 Alfabetyczna kolejność ciągów .................................................................103 Implementacja instrukcji if .......................................................................104 Wyodrębnianie ze środka ........................................................................106 Dysfunkcjonalne systemy komputerowe ...................................................106 3.3. Wiele wariantów ...................................................................................... 107 Instrukcja switch ......................................................................................110 3.4. Zagnieżdżone gałęzie ............................................................................... 111 Problem z zawieszonym słowem else .......................................................113 Ręczne śledzenie kodu ............................................................................114 3.5. Rozwiązywanie problemów: schematy blokowe ....................................... 116 3.6. Rozwiązywanie problemów: przypadki testowe ........................................ 119 Opracuj harmonogram i zarezerwuj czas na nieoczekiwane problemy .....120 3.7. Zmienne i operatory logiczne ................................................................... 121 Łączenie wielu operatorów relacyjnych ....................................................124 Mylenie warunków i || .....................................................................125 Skrócone obliczanie wartości operatorów logicznych ...............................126 Prawa de Morgana ...................................................................................126 3.8. Zastosowanie: weryfikacja danych wejściowych ....................................... 127 Sztuczna inteligencja ................................................................................129 Podsumowanie rozdziału .................................................................................... 131 CPB WDP TS WDP CPB CPB TS TS IAS 4. PĘTLE ......................................................................................................133 4.1. Pętla while ............................................................................................... 133 Nieskończone pętle .................................................................................138 Nie myśl w kategoriach „Czy doszliśmy już do celu?” ...............................138 Pomyłki o jeden .......................................................................................139 Pierwszy „bug” ........................................................................................140 4.2. Rozwiązywanie problemów: ręczne śledzenie kodu ................................. 140 CPB CPB CPB IAS Kup książkęPoleć książkę 6 Spis treści WDP 4.3. Pętla for ................................................................................................... 143 WDP Używaj pętli tylko do tego, do czego została przeznaczona ......................147 WDP Wybierz zakres pętli odpowiedni do zadania ...........................................147 WDP Licz iteracje .............................................................................................148 4.4. Pętla do ................................................................................................... 148 Schematy blokowe pętli ...........................................................................149 4.5. Przetwarzanie danych wejściowych .......................................................... 150 4.5.1. Wartości wartownika ...............................................................................150 4.5.2. Odczytywanie danych wejściowych do chwili niepowodzenia .................151 TS Czyszczenie stanu błędu ..........................................................................153 TS „Pętla i pół” oraz instrukcja break ...........................................................154 TS Przekierowywanie wejścia i wyjścia ..........................................................154 4.6. Rozwiązywanie problemów: scenopis ...................................................... 155 4.7. Typowe algorytmy pętli ............................................................................ 158 Suma i średnia .........................................................................................158 4.7.1. Zliczanie pasujących elementów ..............................................................158 4.7.2. 4.7.3. Znajdowanie pierwszego pasującego elementu ........................................159 4.7.4. Monitowanie aż do skutku .......................................................................159 4.7.5. Maksimum i minimum .............................................................................160 Porównywanie sąsiednich wartości ..........................................................160 4.7.6. JTZ Tworzenie pętli ........................................................................................161 P Przetwarzanie numerów kart kredytowych ...............................................165 4.8. Zagnieżdżone pętle .................................................................................. 165 Manipulowanie pikselami obrazu .............................................................168 4.9. Rozwiązywanie problemów: najpierw rozwiąż prostszy problem .............. 169 4.10. Liczby losowe i symulacje ......................................................................... 173 4.10.1. Generowanie liczb losowych ....................................................................174 4.10.2. Symulowanie rzutów kostką .....................................................................175 4.10.3. Metoda Monte Carlo ...............................................................................176 IAS Piractwo cyfrowe .....................................................................................177 Podsumowanie rozdziału .................................................................................... 178 P 5. FUNKCJE .................................................................................................181 5.1. Funkcje jako czarne skrzynki .................................................................... 181 Implementowanie funkcji ......................................................................... 183 5.2. WDP Komentarze funkcji ..................................................................................185 5.3. Przekazywanie parametrów ...................................................................... 185 Nie modyfikuj zmiennych parametrycznych .............................................187 5.4. Wartości zwracane ................................................................................... 187 Brak wartości zwracanej ...........................................................................188 Deklaracje funkcji ....................................................................................189 Implementowanie funkcji ........................................................................190 CPB TS JTZ WDP Kup książkęPoleć książkę Spis treści 7 P P WDP WDP TS WDP WDP WDP P Generowanie losowych haseł ...................................................................191 Używanie debugera .................................................................................191 5.5. Funkcje bez wartości zwracanych ............................................................. 192 5.6. Rozwiązywanie problemów: funkcje do ponownego wykorzystania .......... 193 5.7. Rozwiązywanie problemów: uściślanie stopniowe .................................... 195 Pilnuj, by funkcje były krótkie ..................................................................200 Śledzenie funkcji ......................................................................................200 Atrapy ......................................................................................................202 Obliczanie oceny z przedmiotu ...............................................................202 5.8. Zakres zmiennej i zmienne globalne ......................................................... 202 Unikaj zmiennych globalnych ..................................................................204 5.9. Parametry referencyjne ............................................................................ 204 Preferuj wartości zwracane zamiast parametrów referencyjnych ...............208 Stałe referencje ........................................................................................209 5.10. Funkcje rekurencyjne (opcjonalnie) .......................................................... 209 Wnioskowanie rekurencyjne ....................................................................212 Nagłe rozpowszechnienie się komputerów osobistych .............................214 Podsumowanie rozdziału .................................................................................... 215 JTZ IAS 6. TABLICE I WEKTORY ..............................................................................217 6.1. Tablice ..................................................................................................... 217 6.1.1. Definiowanie tablic ..................................................................................217 6.1.2. Dostęp do elementów tablicy ..................................................................219 Częściowo wypełnione tablice .................................................................221 6.1.3. CPB Przekroczenie zakresu .............................................................................222 WDP Używaj tablic do przechowywania serii związanych ze sobą wartości .......222 IAS Wirusy komputerowe ..............................................................................222 6.2. Typowe algorytmy tablicowe .................................................................... 224 6.2.1. Wypełnianie wartościami .........................................................................224 Kopiowanie .............................................................................................224 6.2.2. 6.2.3. Suma i średnia .........................................................................................225 6.2.4. Maksimum i minimum .............................................................................225 Separatory elementów .............................................................................225 6.2.5. 6.2.6. Zliczanie pasujących elementów ..............................................................226 6.2.7. Wyszukiwanie liniowe .............................................................................226 6.2.8. Usuwanie elementu .................................................................................227 6.2.9. Wstawianie elementu ..............................................................................227 6.2.10. Przestawianie elementów .........................................................................229 6.2.11. Odczyt danych wejściowych ....................................................................230 TS Sortowanie za pomocą biblioteki C++ ....................................................231 TS Algorytm sortowania ................................................................................231 TS Wyszukiwanie binarne .............................................................................233 Kup książkęPoleć książkę 8 Spis treści TS 6.3. Tablice a funkcje ...................................................................................... 234 Stałe parametry tablicowe ........................................................................237 6.4. Rozwiązywanie problemów: dostosowywanie algorytmów ........................ 238 Praca z tablicami ......................................................................................240 Rzut kostką ..............................................................................................243 JTZ P 6.5. Rozwiązywanie problemów: odkrywanie algorytmów przez manipulację obiektami fizycznymi .................................................. 244 6.6. Tablice dwuwymiarowe ........................................................................... 246 6.6.1. Definiowanie tablic dwuwymiarowych .....................................................247 6.6.2. Dostęp do elementów .............................................................................248 6.6.3. Lokalizowanie sąsiadujących elementów ..................................................248 6.6.4. Obliczanie sum wierszy i kolumn .............................................................249 6.6.5. Dwuwymiarowe parametry tablicowe ......................................................250 CPB Pomijanie rozmiaru kolumny w dwuwymiarowym parametrze tablicowym ...........................................253 Tabela danych o ludności świata ..............................................................253 6.7. Wektory ................................................................................................... 253 6.7.1. Definiowanie wektorów ...........................................................................254 6.7.2. Powiększanie i zmniejszanie wektorów ....................................................255 6.7.3. Wektory a funkcje ...................................................................................256 6.7.4. Algorytmy związane z wektorami .............................................................257 6.7.5. Wektory dwuwymiarowe .........................................................................259 WDP Stosuj wektory zamiast tablic ....................................................................260 TS Pętla for oparta na zakresie ......................................................................260 Podsumowanie rozdziału .................................................................................... 261 P 7. WSKAŹNIKI I STRUKTURY .....................................................................263 7.1. Definiowanie i używanie wskaźników ...................................................... 264 7.1.1. Definiowanie wskaźników .......................................................................264 7.1.2. Dostęp do zmiennych poprzez wskaźniki .................................................265 Inicjowanie wskaźników ..........................................................................266 7.1.3. CPB Mylenie wskaźników z danymi, na które wskazują ...................................268 WDP Używaj oddzielnej definicji dla każdej zmiennej wskaźnikowej ................269 TS Wskaźniki i referencje ..............................................................................269 7.2. Tablice i wskaźniki ................................................................................... 270 Tablice jako wskaźniki .............................................................................270 Arytmetyka wskaźnikowa .........................................................................271 Tablicowe zmienne parametryczne są wskaźnikami .................................272 Przechodzenie po tablicy przy użyciu wskaźnika ......................................273 Zwracanie wskaźnika wskazującego na zmienną lokalną ..........................274 Programuj przejrzyście, a nie sprytnie ......................................................275 Stałe wskaźniki .........................................................................................275 7.2.1. 7.2.2. 7.2.3. TS CPB WDP TS Kup książkęPoleć książkę Spis treści 9 CPB CPB JTZ P IAS 7.3.1. 7.3.2. 7.3.3. 7.3.4. 7.3.5. TS 7.3. Ciągi w językach C i C++ ........................................................................ 276 Typ char ..................................................................................................276 Ciągi w stylu C .........................................................................................276 Tablice znaków ........................................................................................277 Konwertowanie pomiędzy ciągami w stylu C i C++ ................................278 Ciągi w stylu C++ i operator [] ................................................................278 Praca z ciągami w stylu C .........................................................................279 7.4. Dynamiczna alokacja pamięci .................................................................. 281 Wiszące wskaźniki ...................................................................................283 Wycieki pamięci ......................................................................................284 7.5. Tablice i wektory wskaźników .................................................................. 285 7.6. Rozwiązywanie problemów: rysowanie schematu ..................................... 288 Praca ze wskaźnikami ..............................................................................289 Tworzenie korespondencji masowej ........................................................291 Systemy wbudowane ...............................................................................291 7.7. Struktury .................................................................................................. 292 Typy strukturalne .....................................................................................292 Przypisania struktur i ich porównywanie ..................................................293 Funkcje a struktury ...................................................................................294 Tablice struktur ........................................................................................294 Struktury ze składowymi tablicowymi .......................................................295 Struktury zagnieżdżone ............................................................................295 7.8. Wskaźniki a struktury ............................................................................... 296 7.8.1. Wskaźniki do struktur ..............................................................................296 7.8.2. Struktury ze składowymi wskaźnikowymi .................................................297 TS Wskaźniki inteligentne .............................................................................298 Podsumowanie rozdziału .................................................................................... 299 7.7.1. 7.7.2. 7.7.3. 7.7.4. 7.7.5. 7.7.6. 8. STRUMIENIE ...........................................................................................301 8.1. Odczytywanie i zapisywanie plików tekstowych ....................................... 301 8.1.1. Otwieranie strumienia .............................................................................302 8.1.2. Odczyt z pliku .........................................................................................303 Zapis do pliku ..........................................................................................304 8.1.3. 8.1.4. Przykład przetwarzania pliku ...................................................................304 8.2. Odczyt tekstowych danych wejściowych ................................................... 307 8.2.1. Odczyt wyrazów ......................................................................................307 8.2.2. Odczyt znaków ........................................................................................307 8.2.3. Odczyt wierszy ........................................................................................309 CPB Łączenie operacji wejścia przy użyciu operatora i funkcji getline .......310 TS Sprawdzanie błędu strumienia .................................................................311 8.3. Zapisywanie tekstowych danych wyjściowych ........................................... 312 Standard Unicode, kodowanie UTF-8 i ciągi C++ ...................................314 TS Kup książkęPoleć książkę 10 Spis treści IAS JTZ P 8.4. Analizowanie i formatowanie ciągów ........................................................ 315 8.5. Argumenty wiersza poleceń ...................................................................... 317 Algorytmy szyfrowania .............................................................................320 Przetwarzanie plików tekstowych .............................................................321 Wyszukiwanie duplikatów .......................................................................324 8.6. Dostęp swobodny i pliki binarne .............................................................. 324 8.6.1. Dostęp swobodny ....................................................................................324 Pliki binarne ............................................................................................325 8.6.2. Przetwarzanie plików z obrazami .............................................................326 8.6.3. IAS Bazy danych a prywatność .......................................................................329 Podsumowanie rozdziału .................................................................................... 330 CPB 9. KLASY ......................................................................................................333 9.1. Programowanie obiektowe ....................................................................... 334 9.2. Implementowanie prostej klasy ................................................................ 335 9.3. Określanie interfejsu publicznego klasy ..................................................... 338 Zapominanie o średniku ..........................................................................340 9.4. Projektowanie reprezentacji danych ......................................................... 341 9.5. Funkcje składowe ..................................................................................... 342 Implementowanie funkcji składowych ......................................................342 9.5.1. Parametry jawne i niejawne .....................................................................343 9.5.2. 9.5.3. Wywoływanie funkcji składowej wewnątrz innej funkcji składowej ..........344 WDP Wszystkie dane składowe powinny być prywatne, WDP CPB TS TS TS a większość funkcji — publiczna ..............................................................347 Poprawne użycie słowa zastrzeżonego const ............................................347 9.6. Konstruktory ............................................................................................ 348 Próba wywołania konstruktora .................................................................350 Przeciążanie ............................................................................................351 Listy inicjatorów .......................................................................................351 Uniwersalna i jednolita składnia inicjacji ..................................................352 9.7. Rozwiązywanie problemów: śledzenie obiektów ...................................... 353 Implementowanie klasy ...........................................................................355 Implementowanie klasy reprezentującej konto bankowe ..........................358 Elektroniczne maszyny do głosowania ......................................................358 9.8. Rozwiązywanie problemów: znajdowanie klas ......................................... 360 Przekształcaj wektory równoległe w wektory obiektów .............................361 9.9. Osobna kompilacja .................................................................................. 363 9.10. Wskaźniki do obiektów ............................................................................ 367 9.10.1. Obiekty alokowane dynamicznie .............................................................367 9.10.2. Operator - ............................................................................................368 9.10.3. Wskaźnik this ...........................................................................................369 JTZ P IAS WDP Kup książkęPoleć książkę Spis treści 11 9.11. Rozwiązywanie problemów: wzorce danych obiektu ................................ 369 9.11.1. Przechowywanie sumy całkowitej ............................................................370 9.11.2. Liczenie zdarzeń ......................................................................................371 9.11.3. Gromadzenie danych ..............................................................................371 9.11.4. Zarządzanie właściwościami obiektu ........................................................372 9.11.5. Modelowanie obiektów o różnych stanach ..............................................373 9.11.6. Opisywanie pozycji obiektu .....................................................................374 IAS Oprogramowanie o otwartych źródłach i wolne oprogramowanie ............375 Podsumowanie rozdziału .................................................................................... 376 TS CPB CPB CPB WDP 10. DZIEDZICZENIE .....................................................................................379 10.1. Hierarchie dziedziczenia .......................................................................... 379 10.2. Implementowanie klas pochodnych ......................................................... 383 Dziedziczenie prywatne ...........................................................................386 Replikowanie składowych klasy bazowej ..................................................386 Przy odmiennych wartościach należy używać jednej klasy, przy odmiennym działaniu — dziedziczenia ............................................387 Wywoływanie konstruktora klasy bazowej ...............................................387 10.3. Przesłanianie funkcji składowych .............................................................. 388 Zapominanie o podaniu nazwy klasy bazowej .........................................391 10.4. Funkcje wirtualne i polimorfizm ............................................................... 391 10.4.1. Problem odcinania ...................................................................................392 10.4.2. Wskaźniki do klasy bazowej i pochodnej .................................................393 10.4.3. Funkcje wirtualne ....................................................................................394 10.4.4. Polimorfizm .............................................................................................395 WDP Nie używaj znaczników typów .................................................................398 CPB Odcinanie obiektu ...................................................................................398 CPB Nieudane przesłanianie funkcji wirtualnej ................................................399 TS Wirtualne samowywołania .......................................................................400 JTZ Opracowywanie hierarchii dziedziczenia .................................................400 P Implementowanie hierarchii pracowników na potrzeby przetwarzania odcinków wypłat ............................................406 Kto sprawuje kontrolę nad internetem? ....................................................406 Podsumowanie rozdziału .................................................................................... 408 IAS 11. REKURENCJA ..........................................................................................409 11.1. Liczby trójkątne ....................................................................................... 409 Śledzenie wykonania funkcji rekurencyjnych ...........................................413 Nieskończona rekurencja .........................................................................414 Wnioskowanie rekurencyjne ....................................................................415 Znajdowanie plików ................................................................................418 11.2. Rekurencyjne funkcje pomocnicze ........................................................... 418 CPB CPB JTZ P Kup książkęPoleć książkę 12 Spis treści 11.3. Wydajność rekurencji ............................................................................... 419 11.4. Permutacje .............................................................................................. 423 11.5. Rekurencja wzajemna .............................................................................. 426 11.6. Poszukiwanie z nawrotami ....................................................................... 430 Wieże Hanoi ...........................................................................................436 Ograniczenia obliczeń komputerowych ...................................................436 Podsumowanie rozdziału .................................................................................... 439 P IAS TS TS TS 12. SORTOWANIE I WYSZUKIWANIE .........................................................441 12.1. Sortowanie przez wybieranie ................................................................... 441 12.2. Profilowanie algorytmu sortowania przez wybieranie ................................ 444 12.3. Analiza wydajności algorytmu sortowania przez wybieranie ...................... 445 O, omega i theta ......................................................................................447 Sortowanie przez wstawianie ...................................................................449 12.4. Sortowanie przez scalanie ........................................................................ 450 12.5. Analiza algorytmu sortowania przez scalanie ............................................. 453 Algorytm sortowania szybkiego ................................................................456 12.6. Wyszukiwanie .......................................................................................... 457 12.6.1. Wyszukiwanie liniowe .............................................................................457 12.6.2. Wyszukiwanie binarne .............................................................................459 WDP Funkcje biblioteczne do sortowania i wyszukiwania binarnego .................462 TS Definiowanie kolejności sortowania obiektów ..........................................462 12.7. Rozwiązywanie problemów: szacowanie czasu wykonania algorytmu ....... 463 12.7.1. Czas liniowy ............................................................................................463 12.7.2. Czas kwadratowy .....................................................................................464 12.7.3. Wzór trójkąta ...........................................................................................465 12.7.4. Czas logarytmiczny ..................................................................................467 P Ulepszanie algorytmu sortowania przez wstawianie .................................468 IAS Pierwsza programistka ..............................................................................468 Podsumowanie rozdziału .................................................................................... 469 13. ZAAWANSOWANE CECHY JĘZYKA C++ ..............................................471 13.1. Przeciążanie operatorów .......................................................................... 471 13.1.1. Funkcje operatorów .................................................................................472 13.1.2. Przeciążanie operatorów porównania ......................................................474 13.1.3. Wejście i wyjście ......................................................................................475 13.1.4. Operatory składowe .................................................................................476 TS Przeciążanie operatorów inkrementacji i dekrementacji ...........................476 TS Niejawne konwersje typów ......................................................................478 TS Zwracanie referencji ................................................................................479 P Klasa Fraction ..........................................................................................480 Kup książkęPoleć książkę Spis treści 13 13.2. Automatyczne zarządzanie pamięcią ........................................................ 480 13.2.1. Konstruktory przydzielające pamięć .........................................................480 13.2.2. Destruktory ..............................................................................................482 13.2.3. Przeciążanie operatora przypisania ..........................................................483 13.2.4. Konstruktory kopiujące ............................................................................488 WDP Używaj parametrów referencyjnych, by nie tworzyć kopii obiektów ........492 CPB Definiowanie destruktora bez pozostałych dwu funkcji z „wielkiej trójki” .....492 TS Wirtualne destruktory ..............................................................................493 TS Powstrzymanie automatycznego tworzenia funkcji zarządzających pamięcią .........................................................................494 Operacje przenoszenia ............................................................................494 Wskaźniki współdzielone .........................................................................496 Śledzenie zarządzania pamięcią w obiektach typu String ..........................496 13.3. Szablony .................................................................................................. 497 13.3.1. Szablony funkcji .......................................................................................497 13.3.2. Szablony klas ...........................................................................................499 TS Parametry szablonów niedotyczące typów ...............................................501 Podsumowanie rozdziału .................................................................................... 502 TS TS P 14. LISTY POWIĄZANE, STOSY I KOLEJKI ...................................................503 14.1. Używanie list powiązanych ...................................................................... 503 14.2. Implementowanie list powiązanych .......................................................... 509 14.2.1. Klasy dla list, węzłów i iteratorów .............................................................509 Implementowanie iteratorów ...................................................................511 14.2.2. 14.2.3. Implementowanie wstawiania i usuwania węzłów ....................................512 P Implementowanie szablonu listy powiązanej ............................................522 14.3. Wydajność operacji na listach, tablicach i wektorach ................................ 523 14.4. Stosy i kolejki ........................................................................................... 527 14.5. Implementowanie stosów i kolejek ........................................................... 530 14.5.1. Stosy jako listy powiązane ........................................................................530 14.5.2. Stosy jako tablice .....................................................................................533 14.5.3. Kolejki jako listy powiązane .....................................................................534 14.5.4. Kolejki jako tablice cykliczne ....................................................................535 14.6. Zastosowania stosów i kolejek .................................................................. 536 14.6.1. Sprawdzanie zamknięcia nawiasów .........................................................536 14.6.2. Obliczanie wyrażeń zapisanych w odwrotnej notacji polskiej ...................537 14.6.3. Obliczanie wartości wyrażeń algebraicznych ............................................539 14.6.4. Poszukiwanie z nawrotami .......................................................................543 TS Odwrotna notacja polska .........................................................................544 Podsumowanie rozdziału .................................................................................... 545 Kup książkęPoleć książkę 14 Spis treści 15. ZBIORY, MAPY I TABLICE MIESZAJĄCE .................................................547 15.1. Zbiory ...................................................................................................... 547 15.2. Mapy ....................................................................................................... 551 WDP W przypadku iteratorów używaj typu auto ...............................................555 TS Multizbiory i multimapy ...........................................................................555 P Częstość występowania wyrazów .............................................................556 15.3. Implementowanie tablicy mieszającej ....................................................... 556 15.3.1. Skróty ......................................................................................................556 15.3.2. Tablice mieszające ...................................................................................558 15.3.3. Znajdowanie elementu ............................................................................559 15.3.4. Dodawanie i usuwanie elementów ..........................................................560 15.3.5. Przechodzenie po tablicy mieszającej ......................................................560 TS Implementowanie funkcji skrótów ...........................................................566 TS Adresowanie otwarte ...............................................................................568 Podsumowanie rozdziału .................................................................................... 570 16. STRUKTURY DRZEW ..............................................................................571 16.1. Podstawowe koncepcje dotyczące drzew ................................................. 571 16.2. Drzewa binarne ....................................................................................... 575 16.2.1. Przykłady drzew binarnych ......................................................................575 16.2.2. Drzewa zrównoważone ...........................................................................577 Implementacja drzewa binarnego ............................................................578 16.2.3. P Budowanie drzewa Huffmana ..................................................................580 16.3. Binarne drzewa poszukiwań ..................................................................... 580 16.3.1. Właściwość wyszukiwania binarnego .......................................................580 16.3.2. Wstawianie ..............................................................................................582 16.3.3. Usuwanie ................................................................................................584 16.3.4. Wydajność operacji .................................................................................586 16.4. Przeglądanie drzewa ................................................................................ 591 16.4.1. Przeglądanie poprzeczne .........................................................................591 16.4.2. Przeglądanie wzdłużne i wsteczne ...........................................................593 16.4.3. Wzorzec Wizytator ..................................................................................594 16.4.4. Przeszukiwanie w głąb i wszerz ................................................................595 16.4.5. Iteratory drzew ........................................................................................596 16.5. Drzewa czerwono-czarne ......................................................................... 597 16.5.1. Podstawowe własności drzew czerwono-czarnych ...................................597 16.5.2. Wstawianie ..............................................................................................600 16.5.3. Usuwanie ................................................................................................601 P Implementowanie drzewa czerwono-czarnego ........................................605 Podsumowanie rozdziału .................................................................................... 605 Kup książkęPoleć książkę Spis treści 15 17. KOLEJKI PRIORYTETOWE I KOPCE .......................................................607 17.1. Kolejki priorytetowe ................................................................................. 607 Symulacja kolejki oczekujących klientów .................................................610 17.2. Kopce ...................................................................................................... 610 17.3. Algorytm sortowania przez kopcowanie .................................................... 621 Podsumowanie rozdziału .................................................................................... 626 P A ZESTAWIENIE SŁÓW ZASTRZEŻONYCH ........................................................... 627 B ZESTAWIENIE OPERATORÓW .......................................................................... 631 C KODY ZNAKÓW ............................................................................................... 633 D PRZEGLĄD BIBLIOTEKI C++ ............................................................................ 637 E WYTYCZNE DOTYCZĄCE PROGRAMOWANIA W JĘZYKU C++ ...................... 643 F SYSTEMY LICZBOWE ......................................................................................... 651 SŁOWNICZEK .................................................................................................... 661 ŹRÓDŁA ILUSTRACJI ......................................................................................... 671 ŚCIĄGAWKA ...................................................................................................... 673 ALFABETYCZNA LISTA SKŁADNI Definicja funkcji .......................................................................................... 184 Definicja funkcji składowej.......................................................................... 345 Definicja klasy ............................................................................................. 339 Definicja klasy pochodnej ........................................................................... 385 Definicja przeciążonego operatora .............................................................. 474 Definicja tablicy dwuwymiarowej................................................................ 247 Definicja zmiennej ........................................................................................ 60 Definiowanie struktury ................................................................................ 293 Definiowanie tablicy.................................................................................... 219 Definiowanie wektora ................................................................................. 254 Dynamiczna alokacja pamięci ..................................................................... 282 Instrukcja for ............................................................................................... 144 Instrukcja if.................................................................................................... 94 Instrukcja wejściowa...................................................................................... 79 Instrukcja while ........................................................................................... 134 Instrukcja wyjścia........................................................................................... 47 Konstruktor kopiujący.................................................................................. 489 Konstruktor z inicjatorem klasy bazowej...................................................... 388 Porównania ................................................................................................. 100 Praca ze strumieniami plikowymi ................................................................ 303 Program C++............................................................................................... 46 Przeciążony operator przypisania ................................................................ 487 Przypisanie .................................................................................................... 64 Składnia wskaźników................................................................................... 266 Szablon funkcji............................................................................................ 498 Szablon klasy............................................................................................... 500 Kup książkęPoleć książkę 16 Elementy książki Rozdział Często popełniany błąd Jak to zrobić i Przykłady 1. Wprowadzenie Pomijanie średników Błędna pisownia wyrazów 2. Podstawowe typy danych Używanie niezdefiniowanych zmiennych 47 50 66 Używanie niezainicjowanych zmiennych 66 Niezamierzone dzielenie całkowite 74 Niezamknięte nawiasy 74 Zapominanie o plikach nagłówkowych Błędy zaokrąglenia Średnik po warunku if Mylenie operatora = z == Dokładne porównywanie 75 76 96 101 liczb zmiennoprzecinkowych 102 3. Decyzje Opisywanie algorytmu za pomocą pseudokodu Napisanie algorytmu układania płytek podłogowych Obliczanie czasu podróży Przeprowadzanie obliczeń Obliczenie kosztu znaczków pocztowych 54 55 83 83 86 Implementacja instrukcji if Wyodrębnianie ze środka 104 106 Problem z zawieszonym słowem else Łączenie wielu operatorów relacyjnych Mylenie warunków i || 4. Pętle Nieskończone pętle Nie myśl w kategoriach „Czy doszliśmy już do celu?” Pomyłki o jeden 113 124 125 138 138 139 5. Funkcje Brak wartości zwracanej 188 Tworzenie pętli Przetwarzanie numerów 161 kart kredytowych 165 Manipulowanie pikselami obrazu 168 Implementowanie funkcji Generowanie losowych haseł Używanie debugera Obliczanie oceny z przedmiotu Wnioskowanie rekurencyjne 190 191 191 202 212 Kup książkęPoleć książkę Elementy książki 17 Wskazówka dla programistów Temat specjalny Informatyka a społeczeństwo Komputery są wszędzie Organizacje normalizacyjne 38 40 Błąd jednostki zmiennoprzecinkowej procesora Pentium Alfabety międzynarodowe i zestaw Unicode 77 91 48 68 69 69 77 77 99 Dysfunkcjonalne systemy komputerowe Sztuczna inteligencja 106 129 Pierwszy „bug” Piractwo cyfrowe 140 177 Nagłe rozpowszechnienie się komputerów osobistych 214 103 110 126 126 153 154 154 189 209 Kopie zapasowe 44 Sekwencje ucieczki Wybieraj opisowe nazwy zmiennych Nie używaj sekretnych numerów Spacje w wyrażeniach 67 67 76 Typy liczbowe w C++ Zakresy i precyzja liczb Definiowanie zmiennych ze słowem auto Rzutowania Połączenie przypisania i działań arytmetycznych Operator warunkowy Alfabetyczna kolejność ciągów Instrukcja switch Skrócone obliczanie wartości operatorów logicznych Prawa de Morgana Czyszczenie stanu błędu „Pętla i pół” oraz instrukcja break Przekierowywanie wejścia i wyjścia Deklaracje funkcji Stałe referencje Układ nawiasów klamrowych 96 Zawsze używaj nawiasów klamrowych Wcięcia Unikaj duplikowania kodu w gałęziach 97 97 98 Doprowadź do kompilacji z brakiem ostrzeżeń Ręczne śledzenie kodu Opracuj harmonogram i zarezerwuj czas na nieoczekiwane problemy 120 103 114 Używaj pętli tylko do tego, do czego została przeznaczona Wybierz zakres pętli odpowiedni do zadania Licz iteracje Schematy blokowe pętli Komentarze funkcji Nie modyfikuj zmiennych 147 147 148 149 185 parametrycznych 187 Pilnuj, by funkcje były krótkie 200 200 Śledzenie funkcji Atrapy 202 Unikaj zmiennych globalnych 204 Preferuj wartości zwracane zamiast parametrów referencyjnych 208 Kup książkęPoleć książkę 18 Elementy książki Rozdział 6. Tablice i wektory Często popełniany błąd Jak to zrobić i Przykłady Przekroczenie zakresu Pomijanie rozmiaru kolumny w dwuwymiarowym parametrze tablicowym 222 25 268 274 283 284 310 Praca z tablicami Rzut kostką Tabela danych o ludności świata 240 243 253 Praca ze wskaźnikami Tworzenie korespondencji masowej 289 291 Przetwarzanie plików tekstowych 321 Wyszukiwanie duplikatów 324 7. Wskaźniki i struktury 8. Strumienie Mylenie wskaźników z danymi, na które wskazują Zwracanie wskaźnika wskazującego na zmienną lokalną Wiszące wskaźniki Wycieki pamięci Łączenie operacji wejścia przy użyciu operatora i funkcji getline 9. Klasy Zapominanie o średniku Próba wywołania konstruktora 340 350 Implementowanie klasy Implementowanie klasy 355 reprezentującej konto bankowe 358 10. Dziedziczenie Dziedziczenie prywatne Replikowanie składowych klasy bazowej Zapominanie o podaniu nazwy klasy bazowej Odcinanie obiektu Nieudane przesłanianie funkcji wirtualnej 386 Opracowywanie hierarchii dziedziczenia Implementowanie hierarchii pracowników na potrzeby przetwarzania odcinków wypłat 406 400 386 391 398 399 Kup książkęPoleć książkę Elementy książki 19 Wskazówka dla programistów Temat specjalny Informatyka a społeczeństwo Używaj tablic do przechowywania serii związanych ze sobą wartości 222 Stosuj wektory zamiast tablic 260 Sortowanie za pomocą biblioteki C++ Algorytm sortowania Wyszukiwanie binarne Stałe parametry tablicowe Pętla for oparta na zakresie 231 231 233 237 260 Wirusy komputerowe 222 Używaj oddzielnej definicji dla każdej zmiennej wskaźnikowej Programuj przejrzyście, a nie sprytnie 269 275 Wszystkie dane składowe powinny być prywatne, a większość funkcji — publiczna Poprawne użycie słowa zastrzeżonego const Przekształcaj wektory równoległe w wektory obiektów Przy odmiennych wartościach należy używać jednej klasy, przy odmiennym działaniu — dziedziczenia Nie używaj znaczników typów 347 347 361 387 398 Wskaźniki i referencje Przechodzenie po tablicy przy użyciu wskaźnika Stałe wskaźniki Praca z ciągami w stylu C Wskaźniki inteligentne Sprawdzanie błędu strumienia Standard Unicode, kodowanie UTF-8 i ciągi C++ Przeciążanie Listy inicjatorów Uniwersalna i jednolita składnia inicjacji 269 Systemy wbudowane 291 273 275 279 298 311 314 351 351 352 Algorytmy szyfrowania Bazy danych a prywatność 320 329 Elektroniczne maszyny do głosowania Oprogramowanie 358 o otwartych źródłach i wolne oprogramowanie 375 Wywoływanie konstruktora klasy bazowej Wirtualne samowywołania 387 400 Kto sprawuje kontrolę nad internetem? 406 Kup książkęPoleć książkę 20 Elementy książki Rozdział 11. Rekurencja 12. Sortowanie i wyszukiwanie Często popełniany błąd Jak to zrobić i Przykłady Śledzenie wykonania funkcji rekurencyjnych Nieskończona rekurencja 413 414 Wnioskowanie rekurencyjne Znajdowanie plików Wieże Hanoi Ulepszanie algorytmu sortowania przez wstawianie 415 418 436 468 13. Zaawansowane cechy języka C++ Definiowanie destruktora bez pozostałych dwu funkcji z „wielkiej trójki” Klasa Fraction Śledzenie zarządzania pamięcią w obiektach typu String 480 496 492 14. Listy powiązane, stosy i kolejki 15. Zbiory, mapy i tablice mieszające 16. Struktury drzew 17. Kolejki priorytetowe i kopce Implementowanie szablonu listy powiązanej 522 Częstość występowania wyrazów 556 Budowanie drzewa Huffmana Implementowanie drzewa czerwono-czarnego Symulacja kolejki oczekujących klientów 580 605 610 Kup książkęPoleć książkę Elementy książki 21 Wskazówka dla programistów Temat specjalny Informatyka a społeczeństwo Ograniczenia obliczeń komputerowych 436 Pierwsza programistka 468 Funkcje biblioteczne do sortowania i wyszukiwania binarnego 462 Używaj parametrów referencyjnych, by nie tworzyć kopii obiektów 492 W przypadku iteratorów używaj typu auto 555 O, omega i theta 447 Sortowanie przez wstawianie 449 Algorytm sortowania szybkiego Definiowanie kolejności sortowania obiektów 456 462 Przeciążanie operatorów inkrementacji i dekrementacji 476 Niejawne konwersje typów 478 479 Zwracanie referencji Wirtualne destruktory 493 Powstrzymanie automatycznego tworzenia funkcji zarządzających pamięcią 494 494 496 Operacje przenoszenia Wskaźniki współdzielone Parametry szablonów niedotyczące typów Odwrotna notacja polska Multizbiory i multimapy Implementowanie funkcji skrótów Adresowanie otwarte 501 544 555 566 568 Kup książkęPoleć książkę 22 Elementy książki Kup książkęPoleć książkę 6 Tablice i wektory W wielu programach trzeba gromadzić dużą liczbę danych. Standard C++ pozwala na używanie w tym celu tablic i wektorów. Tablice są podstawową strukturą języka. Standardowa biblioteka C++ zawiera konstrukcję vector, która przy pracy z kolek- cjami o nieznanym rozmiarze jest wygodniejszą alternatywą dla tablic. W rozdziale tym poznasz tablice i wektory oraz popularne algorytmy służące do ich przetwarzania. Cele rozdziału:  Dowiesz się, jak gromadzić wartości w tablicach i wektorach.  Poznasz najczęściej używa
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Wprowadzenie do C++. Efektywne nauczanie. Wydanie III
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: