Programowanie. Teoria i praktyka z wykorzystaniem C++. Wydanie III (e-book) Gliwice

Zaczerpnij wiedzę o C++ od samego twórcy języka! Jak zacząć pracę w zintegrowanym środowisku programistycznym? Jak profesjonalnie tworzyć programy użytkowe? Jak korzystać z biblioteki graficznego interfejsu użytkownika? Jeśli zależy Ci na tym, aby zdobyć rzetelną wiedzę i perfekcyjne umiejętności …

od 74,50 Najbliżej: 1 km

Liczba ofert: 1

Oferta sklepu

Opis

Zaczerpnij wiedzę o C++ od samego twórcy języka! Jak zacząć pracę w zintegrowanym środowisku programistycznym? Jak profesjonalnie tworzyć programy użytkowe? Jak korzystać z biblioteki graficznego interfejsu użytkownika? Jeśli zależy Ci na tym, aby zdobyć rzetelną wiedzę i perfekcyjne umiejętności programowania z użyciem języka C++, powinieneś uczyć się od wybitnego eksperta i twórcy tego języka - Bjarne Stroustrupa, który jako pierwszy zaprojektował i zaimplementował C++. Podręcznik, który trzymasz w ręku, daje Ci szansę odkrycia wszelkich tajników tego języka, obszernie opisanego w międzynarodowym standardzie i obsługującego najważniejsze techniki programistyczne. C++ umożliwia pisanie wydajnego i eleganckiego kodu, a większość technik w nim stosowanych można przenieść do innych języków programowania. Książka Programowanie w C++. Teoria i praktyka zawiera szczegółowy opis pojęć i technik programistycznych, a także samego języka C++, oraz przykłady kodu. Znajdziesz tu również omówienia zagadnień zaawansowanych, takich jak przetwarzanie tekstu i testowanie. Z tego podręcznika dowiesz się, na czym polega wywoływanie funkcji przeciążonych i dopasowywanie wyrażeń regularnych. Zobaczysz też, jaki powinien być standard kodowania. Poznasz sposoby projektowania klas graficznych i systemów wbudowanych, tajniki implementacji, wykorzystywania funkcji oraz indywidualizacji operacji wejścia i wyjścia. Korzystając z tego przewodnika, nauczysz się od samego mistrza pisać doskonałe, wydajne i łatwe w utrzymaniu programy. Techniki programistyczne Infrastruktura algorytmiczna Biblioteka standardowa C++ Instrukcje sterujące i obsługa błędów Implementacja i wykorzystanie funkcji Kontrola typów Interfejsy klas Indywidualizacja operacji wejścia i wyjścia Projektowanie klas graficznych Wektory i pamięć wolna Kontenery i iteratory Programowanie systemów wbudowanych Makra Wykorzystaj wiedzę Bjarne Stroustrupa i pisz profesjonalne programy w C++! Spis treści: Wstęp 19 Słowo do studentów 21 Słowo do nauczycieli 22 Standard ISO C++ 23 Pomoc 23 Podziękowania 24 Uwagi do czytelnika 25 0.1. Struktura książki 26 0.1.1. Informacje ogólne 27 0.1.2. Ćwiczenia, praca domowa itp. 28 0.1.3. Po przeczytaniu tej książki 29 0.2. Filozofia nauczania i uczenia się 29 0.2.1. Kolejność tematów 32 0.2.2. Programowanie a język programowania 34 0.2.3. Przenośność 34 0.3. Programowanie a informatyka 35 0.4. Kreatywność i rozwiązywanie problemów 35 0.5. Uwagi i komentarze czytelników 35 0.6. Bibliografia 36 0.7. Noty biograficzne 36 Bjarne Stroustrup 36 Lawrence "Pete" Petersen 37 Rozdział 1. Komputery, ludzie i programowanie 39 1.1. Wstęp 40 1.2. Oprogramowanie 40 1.3. Ludzie 42 1.4. Informatyka 45 1.5. Komputery są wszędzie 46 1.5.1. Komputery z ekranem i bez 46 1.5.2. Transport 47 1.5.3. Telekomunikacja 48 1.5.4. Medycyna 50 1.5.5. Informacja 51 1.5.6. Sięgamy w kosmos 53 1.5.7. I co z tego 54 1.6. Ideały dla programistów 54 CZĘŚĆ I. PODSTAWY 61 Rozdział 2. Witaj, świecie! 63 2.1. Programy 64 2.2. Klasyczny pierwszy program 64 2.3. Kompilacja 67 2.4. Łączenie 69 2.5. Środowiska programistyczne 70 Rozdział 3. Obiekty, typy i wartości 77 3.1. Dane wejściowe 78 3.2. Zmienne 80 3.3. Typy danych wejściowych 81 3.4. Operacje i operatory 82 3.5. Przypisanie i inicjalizacja 85 3.5.1. Przykład wykrywania powtarzających się słów 87 3.6. Złożone operatory przypisania 89 3.6.1. Przykład zliczania powtarzających się słów 89 3.7. Nazwy 90 3.8. Typy i obiekty 92 3.9. Kontrola typów 94 3.9.1. Konwersje bezpieczne dla typów 95 3.9.2. Konwersje niebezpieczne dla typów 96 Rozdział 4. Wykonywanie obliczeń 103 4.1. Wykonywanie obliczeń 104 4.2. Cele i narzędzia 105 4.3. Wyrażenia 107 4.3.1. Wyrażenia stałe 108 4.3.2. Operatory 110 4.3.3. Konwersje 111 4.4. Instrukcje 112 4.4.1. Selekcja 113 4.4.2. Iteracja 119 4.5. Funkcje 123 4.5.1. Po co zaprzątać sobie głowę funkcjami 124 4.5.2. Deklarowanie funkcji 126 4.6. Wektor 126 4.6.1. Przeglądanie zawartości wektora 128 4.6.2. Powiększanie wektora 128 4.6.3. Przykład wczytywania liczb do programu 129 4.6.4. Przykład z użyciem tekstu 131 4.7. Właściwości języka 133 Rozdział 5. Błędy 139 5.1. Wstęp 140 5.2. Źródła błędów 141 5.3. Błędy kompilacji 142 5.3.1. Błędy składni 142 5.3.2. Błędy typów 143 5.3.3. Niebłędy 144 5.4. Błędy konsolidacji 145 5.5. Błędy czasu wykonania 146 5.5.1. Rozwiązywanie problemu przez wywołującego 147 5.5.2. Rozwiązywanie problemu przez wywoływanego 148 5.5.3. Raportowanie błędów 149 5.6. Wyjątki 151 5.6.1. Nieprawidłowe argumenty 151 5.6.2. Błędy zakresu 152 5.6.3. Nieprawidłowe dane wejściowe 154 5.6.4. Błędy zawężania zakresu 156 5.7. Błędy logiczne 157 5.8. Szacowanie 159 5.9. Debugowanie 161 5.9.1. Praktyczna rada dotycząca debugowania 162 5.10. Warunki wstępne i końcowe 165 5.10.1. Warunki końcowe 167 5.11. Testowanie 168 Rozdział 6. Pisanie programu 175 6.1. Problem 176 6.2. Przemyślenie problemu 176 6.2.1. Etapy rozwoju oprogramowania 177 6.2.2. Strategia 177 6.3. Wracając do kalkulatora 179 6.3.1. Pierwsza próba 180 6.3.2. Tokeny 182 6.3.3. Implementowanie tokenów 183 6.3.4. Używanie tokenów 185 6.3.5. Powrót do tablicy 186 6.4. Gramatyki 188 6.4.1. Dygresja - gramatyka języka angielskiego 192 6.4.2. Pisanie gramatyki 193 6.5. Zamiana gramatyki w kod 194 6.5.1. Implementowanie zasad gramatyki 194 6.5.2. Wyrażenia 195 6.5.3. Składniki 198 6.5.4. Podstawowe elementy wyrażeń 200 6.6. Wypróbowywanie pierwszej wersji 200 6.7. Wypróbowywanie drugiej wersji 204 6.8. Strumienie tokenów 205 6.8.1. Implementacja typu Token_stream 207 6.8.2. Wczytywanie tokenów 208 6.8.3. Wczytywanie liczb 210 6.9. Struktura programu 210 Rozdział 7. Kończenie programu 217 7.1. Wprowadzenie 218 7.2. Wejście i wyjście 218 7.3. Obsługa błędów 220 7.4. Liczby ujemne 224 7.5. Reszta z dzielenia 225 7.6. Oczyszczanie kodu 226 7.6.1. Stałe symboliczne 227 7.6.2. Użycie funkcji 229 7.6.3. Układ kodu 230 7.6.4. Komentarze 231 7.7. Odzyskiwanie sprawności po wystąpieniu błędu 232 7.8. Zmienne 235 7.8.1. Zmienne i definicje 235 7.8.2. Wprowadzanie nazw 239 7.8.3. Nazwy predefiniowane 242 7.8.4. Czy to już koniec? 242 Rozdział 8. Szczegóły techniczne - funkcje itp. 247 8.1. Szczegóły techniczne 248 8.2. Deklaracje i definicje 249 8.2.1. Rodzaje deklaracji 252 8.2.2. Deklaracje stałych i zmiennych 252 8.2.3. Domyślna inicjalizacja 254 8.3. Pliki nagłówkowe 254 8.4. Zakres 256 8.5. Wywoływanie i wartość zwrotna funkcji 261 8.5.1. Deklarowanie argumentów i typu zwrotnego 261 8.5.2. Zwracanie wartości 263 8.5.3. Przekazywanie przez wartość 264 8.5.4. Przekazywanie argumentów przez stałą referencję 265 8.5.5. Przekazywanie przez referencję 267 8.5.6. Przekazywanie przez wartość a przez referencję 269 8.5.7. Sprawdzanie argumentów i konwersja 271 8.5.8. Implementacja wywołań funkcji 272 8.5.9. Funkcje constexpr 276 8.6. Porządek wykonywania instrukcji 277 8.6.1. Wartościowanie wyrażeń 278 8.6.2. Globalna inicjalizacja 279 8.7. Przestrzenie nazw 280 8.7.1. Dyrektywy i deklaracje using 281 Rozdział 9. Szczegóły techniczne - klasy itp. 287 9.1. Typy zdefiniowane przez użytkownika 288 9.2. Klasy i składowe klas 289 9.3. Interfejs i implementacja 289 9.4. Tworzenie klas 291 9.4.1. Struktury i funkcje 291 9.4.2. Funkcje składowe i konstruktory 293 9.4.3. Ukrywanie szczegółów 295 9.4.4. Definiowanie funkcji składowych 296 9.4.5. Odwoływanie się do bieżącego obiektu 298 9.4.6. Raportowanie błędów 299 9.5. Wyliczenia 300 9.5.1. "Zwykłe" wyliczenia 301 9.6. Przeciążanie operatorów 302 9.7. Interfejsy klas 303 9.7.1. Typy argumentów 304 9.7.2. Kopiowanie 306 9.7.3. Konstruktory domyślne 307 9.7.4. Stałe funkcje składowe 310 9.7.5. Składowe i funkcje pomocnicze 311 9.8. Klasa Date 313 CZĘŚĆ II. WEJŚCIE I WYJŚCIE 321 Rozdział 10. Strumienie wejścia i wyjścia 323 10.1. Wejście i wyjście 324 10.2. Model strumieni wejścia i wyjścia 325 10.3. Pliki 327 10.4. Otwieranie pliku 328 10.5. Odczytywanie i zapisywanie plików 330 10.6. Obsługa błędów wejścia i wyjścia 332 10.7. Wczytywanie pojedynczej wartości 334 10.7.1. Rozłożenie problemu na mniejsze części 336 10.7.2. Oddzielenie warstwy komunikacyjnej od funkcji 339 10.8. Definiowanie operatorów wyjściowych 340 10.9. Definiowanie operatorów wejściowych 341 10.10. Standardowa pętla wejściowa 342 10.11. Wczytywanie pliku strukturalnego 343 10.11.1. Reprezentacja danych w pamięci 344 10.11.2. Odczytywanie struktur wartości 345 10.11.3. Zmienianie reprezentacji 349 Rozdział 11. Indywidualizacja operacji wejścia i wyjścia 353 11.1. Regularność i nieregularność 354 11.2. Formatowanie danych wyjściowych 354 11.2.1. Wysyłanie na wyjście liczb całkowitych 355 11.2.2. Przyjmowanie na wejściu liczb całkowitych 356 11.2.3. Wysyłanie na wyjście liczb zmiennoprzecinkowych 357 11.2.4. Precyzja 358 11.2.5. Pola 359 11.3. Otwieranie plików i pozycjonowanie 361 11.3.1. Tryby otwierania plików 361 11.3.2. Pliki binarne 362 11.3.3. Pozycjonowanie w plikach 365 11.4. Strumienie łańcuchowe 365 11.5. Wprowadzanie danych wierszami 367 11.6. Klasyfikowanie znaków 368 11.7. Stosowanie niestandardowych separatorów 370 11.8. Zostało jeszcze tyle do poznania 376 Rozdział 12. Projektowanie klas graficznych 381 12.1. Czemu grafika? 382 12.2. Model graficzny 383 12.3. Pierwszy przykład 384 12.4. Biblioteka GUI 387 12.5. Współrzędne 388 12.6. Figury geometryczne 389 12.7. Używanie klas figur geometrycznych 389 12.7.1. Nagłówki graficzne i funkcja main 390 12.7.2. Prawie puste okno 390 12.7.3. Klasa Axis 392 12.7.4. Rysowanie wykresu funkcji 394 12.7.5. Wielokąty 394 12.7.6. Prostokąty 395 12.7.7. Wypełnianie kolorem 397 12.7.8. Tekst 398 12.7.9. Obrazy 399 12.7.10. Jeszcze więcej grafik 400 12.8. Uruchamianie programu 401 12.8.1. Pliki źródłowe 402 Rozdział 13. Klasy graficzne 407 13.1. Przegląd klas graficznych 408 13.2. Klasy Point i Line 410 13.3. Klasa Lines 412 13.4. Klasa Color 415 13.5. Typ Line_style 416 13.6. Typ Open_polyline 419 13.7. Typ Closed_polyline 420 13.8. Typ Polygon 421 13.9. Typ Rectangle 423 13.10. Wykorzystywanie obiektów bez nazw 427 13.11. Typ Text 429 13.12. Typ Circle 431 13.13. Typ Ellipse 432 13.14. Typ Marked_polyline 434 13.15. Typ Marks 435 13.16. Typ Mark 436 13.17. Typ Image 437 Rozdział 14. Projektowanie klas graficznych 445 14.1. Zasady projektowania 446 14.1.1. Typy 446 14.1.2. Operacje 447 14.1.3. Nazewnictwo 448 14.1.4. Zmienność 450 14.2. Klasa Shape 450 14.2.1. Klasa abstrakcyjna 452 14.2.2. Kontrola dostępu 453 14.2.3. Rysowanie figur 456 14.2.4. Kopiowanie i zmienność 458 14.3. Klasy bazowe i pochodne 460 14.3.1. Układ obiektu 461 14.3.2. Tworzenie podklas i definiowanie funkcji wirtualnych 463 14.3.3. Przesłanianie 463 14.3.4. Dostęp 465 14.3.5. Czyste funkcje wirtualne 466 14.4. Zalety programowania obiektowego 467 Rozdział 15. Graficzne przedstawienie funkcji i danych 473 15.1. Wprowadzenie 474 15.2. Rysowanie wykresów prostych funkcji 474 15.3. Typ Function 478 15.3.1. Argumenty domyślne 479 15.3.2. Więcej przykładów 480 15.3.3. Wyrażenia lambda 481 15.4. Typ Axis 482 15.5. Wartość przybliżona funkcji wykładniczej 484 15.6. Przedstawianie danych na wykresach 488 15.6.1. Odczyt danych z pliku 490 15.6.2. Układ ogólny 491 15.6.3. Skalowanie danych 492 15.6.4. Budowanie wykresu 493 Rozdział 16. Graficzne interfejsy użytkownika 499 16.1. Różne rodzaje interfejsów użytkownika 500 16.2. Przycisk Next 501 16.3. Proste okno 502 16.3.1. Funkcje zwrotne 503 16.3.2. Pętla oczekująca 506 16.3.3. Wyrażenie lambda jako wywołanie zwrotne 507 16.4. Typ Button i inne pochodne typu Widget 507 16.4.1. Widgety 508 16.4.2. Przyciski 509 16.4.3. Widgety In_box i Out_box 510 16.4.4. Menu 510 16.5. Przykład 511 16.6. Inwersja kontroli 514 16.7. Dodawanie menu 515 16.8. Debugowanie kodu GUI 519 CZĘŚĆ III. DANE I ALGORYTMY 525 Rozdział 17. Wektory i pamięć wolna 527 17.1. Wprowadzenie 528 17.2. Podstawowe wiadomości na temat typu vector 529 17.3. Pamięć, adresy i wskaźniki 531 17.3.1. Operator sizeof 533 17.4. Pamięć wolna a wskaźniki 534 17.4.1. Alokacja obiektów w pamięci wolnej 535 17.4.2. Dostęp poprzez wskaźniki 536 17.4.3. Zakresy 537 17.4.4. Inicjalizacja 538 17.4.5. Wskaźnik zerowy 539 17.4.6. Dealokacja pamięci wolnej 540 17.5. Destruktory 542 17.5.1. Generowanie destruktorów 544 17.5.2. Destruktory a pamięć wolna 544 17.6. Dostęp do elementów 546 17.7. Wskaźniki na obiekty klas 547 17.8. Babranie się w typach - void* i rzutowanie 548 17.9. Wskaźniki i referencje 550 17.9.1. Wskaźniki i referencje jako parametry 551 17.9.2. Wskaźniki, referencje i dziedziczenie 552 17.9.3. Przykład - listy 553 17.9.4. Operacje na listach 554 17.9.5. Zastosowania list 556 17.10. Wskaźnik this 557 17.10.1. Więcej przykładów użycia typu Link 559 Rozdział 18. Wektory i tablice 565 18.1. Wprowadzenie 566 18.2. Inicjalizacja 566 18.3. Kopiowanie 568 18.3.1. Konstruktory kopiujące 569 18.3.2. Przypisywanie z kopiowaniem 571 18.3.3. Terminologia związana z kopiowaniem 573 18.3.4. Przenoszenie 574 18.4. Podstawowe operacje 576 18.4.1. Konstruktory jawne 578 18.4.2. Debugowanie konstruktorów i destruktorów 579 18.5. Uzyskiwanie dostępu do elementów wektora 581 18.5.1. Problem stałych wektorów 582 18.6. Tablice 583 18.6.1. Wskaźniki na elementy tablicy 584 18.6.2. Wskaźniki i tablice 586 18.6.3. Inicjalizowanie tablic 588 18.6.4. Problemy ze wskaźnikami 589 18.7. Przykłady - palindrom 592 18.7.1. Wykorzystanie łańcuchów 592 18.7.2. Wykorzystanie tablic 593 18.7.3. Wykorzystanie wskaźników 594 Rozdział 19. Wektory, szablony i wyjątki 599 19.1. Analiza problemów 600 19.2. Zmienianie rozmiaru 602 19.2.1. Reprezentacja 603 19.2.2. Rezerwacja pamięci i pojemność kontenera 604 19.2.3. Zmienianie rozmiaru 605 19.2.4. Funkcja push_back() 605 19.2.5. Przypisywanie 606 19.2.6. Podsumowanie dotychczasowej pracy nad typem vector 608 19.3. Szablony 608 19.3.1. Typy jako parametry szablonów 609 19.3.2. Programowanie ogólne 611 19.3.3. Koncepcje 613 19.3.4. Kontenery a dziedziczenie 615 19.3.5. Liczby całkowite jako parametry szablonów 616 19.3.6. Dedukcja argumentów szablonu 618 19.3.7. Uogólnianie wektora 618 19.4. Sprawdzanie zakresu i wyjątki 621 19.4.1. Dygresja - uwagi projektowe 622 19.4.2. Wyznanie na temat makr 624 19.5. Zasoby i wyjątki 625 19.5.1. Potencjalne problemy z zarządzaniem zasobami 626 19.5.2. Zajmowanie zasobów jest inicjalizacją 628 19.5.3. Gwarancje 628 19.5.4. Obiekt unique_ptr 630 19.5.5. Zwrot przez przeniesienie 631 19.5.6. Technika RAII dla wektora 631 Rozdział 20. Kontenery i iteratory 637 20.1. Przechowywanie i przetwarzanie danych 638 20.1.1. Praca na danych 638 20.1.2. Uogólnianie kodu 639 20.2. Ideały twórcy biblioteki STL 642 20.3. Sekwencje i iteratory 645 20.3.1. Powrót do przykładu 647 20.4. Listy powiązane 649 20.4.1. Operacje list 650 20.4.2. Iteracja 651 20.5. Jeszcze raz uogólnianie wektora 653 20.5.1. Przeglądanie kontenera 655 20.5.2. Słowo kluczowe auto 656 20.6. Przykład - prosty edytor tekstu 657 20.6.1. Wiersze 659 20.6.2. Iteracja 660 20.7. Typy vector, list oraz string 663 20.7.1. Funkcje insert() i erase() 664 20.8. Dostosowanie wektora do biblioteki STL 666 20.9. Dostosowywanie wbudowanych tablic do STL 668 20.10. Przegląd kontenerów 670 20.10.1. Kategorie iteratorów 672 Rozdział 21. Algorytmy i słowniki 677 21.1. Algorytmy biblioteki standardowej 678 21.2. Najprostszy algorytm - find() 679 21.2.1. Kilka przykładów z programowania ogólnego 681 21.3. Ogólny algorytm wyszukiwania - find_if() 682 21.4. Obiekty funkcyjne 683 21.4.1. Abstrakcyjne spojrzenie na obiekty funkcyjne 684 21.4.2. Predykaty składowych klas 686 21.4.3. Wyrażenia lambda 687 21.5. Algorytmy numeryczne 688 21.5.1. Akumulacja 688 21.5.2. Uogólnianie funkcji accumulate() 689 21.5.3. Iloczyn skalarny 691 21.5.4. Uogólnianie funkcji inner_product() 692 21.6. Kontenery asocjacyjne 693 21.6.1. Słowniki 693 21.6.2. Opis ogólny kontenera map 695 21.6.3. Jeszcze jeden przykład zastosowania słownika 699 21.6.4. Kontener unordered_map 701 21.6.5. Zbiory 703 21.7. Kopiowanie 704 21.7.1. Funkcja copy() 705 21.7.2. Iteratory strumieni 705 21.7.3. Utrzymywanie porządku przy użyciu kontenera set 708 21.7.4. Funkcja copy_if() 708 21.8. Sortowanie i wyszukiwanie 709 21.9. Algorytmy kontenerowe 711 CZĘŚĆ IV. POSZERZANIE HORYZONTÓW 717 Rozdział 22. Ideały i historia 719 22.1. Historia, ideały i profesjonalizm 720 22.1.1. Cele i filozofie języków programowania 720 22.1.2. Ideały programistyczne 722 22.1.3. Style i paradygmaty 728 22.2. Krótka historia języków programowania 731 22.2.1. Pierwsze języki 732 22.2.2. Korzenie nowoczesnych języków programowania 733 22.2.3. Rodzina Algol 738 22.2.4. Simula 745 22.2.5. C 747 22.2.6. C++ 750 22.2.7. Dziś 752 22.2.8. Źródła informacji 753 Rozdział 23. Przetwarzanie tekstu 757 23.1. Tekst 758 23.2. Łańcuchy 758 23.3. Strumienie wejścia i wyjścia 762 23.4. Słowniki 762 23.4.1. Szczegóły implementacyjne 767 23.5. Problem 769 23.6. Wyrażenia regularne 771 23.6.1. Surowe literały łańcuchowe 773 23.7. Wyszukiwanie przy użyciu wyrażeń regularnych 774 23.8. Składnia wyrażeń regularnych 776 23.8.1. Znaki i znaki specjalne 776 23.8.2. Rodzaje znaków 777 23.8.3. Powtórzenia 778 23.8.4. Grupowanie 779 23.8.5. Alternatywa 779 23.8.6. Zbiory i przedziały znaków 780 23.8.7. Błędy w wyrażeniach regularnych 781 23.9. Dopasowywanie przy użyciu wyrażeń regularnych 783 23.10. Źródła 787 Rozdział 24. Działania na liczbach 791 24.1. Wprowadzenie 792 24.2. Rozmiar, precyzja i przekroczenie zakresu 792 24.2.1. Ograniczenia typów liczbowych 795 24.3. Tablice 796 24.4. Tablice wielowymiarowe w stylu języka C 797 24.5. Biblioteka Matrix 798 24.5.1. Wymiary i dostęp 799 24.5.2. Macierze jednowymiarowe 801 24.5.3. Macierze dwuwymiarowe 804 24.5.4. Wejście i wyjście macierzy 806 24.5.5. Macierze trójwymiarowe 807 24.6. Przykład - rozwiązywanie równań liniowych 808 24.6.1. Klasyczna eliminacja Gaussa 809 24.6.2. Wybór elementu centralnego 810 24.6.3. Testowanie 811 24.7. Liczby losowe 812 24.8. Standardowe funkcje matematyczne 815 24.9. Liczby zespolone 816 24.10. Źródła 818 Rozdział 25. Programowanie systemów wbudowanych 823 25.1. Systemy wbudowane 824 25.2. Podstawy 827 25.2.1. Przewidywalność 829 25.2.2. Ideały 829 25.2.3. Życie z awarią 830 25.3. Zarządzanie pamięcią 832 25.3.1. Problemy z pamięcią wolną 833 25.3.2. Alternatywy dla ogólnej pamięci wolnej 836 25.3.3. Przykład zastosowania puli 837 25.3.4. Przykład użycia stosu 838 25.4. Adresy, wskaźniki i tablice 839 25.4.1. Niekontrolowane konwersje 839 25.4.2. Problem - źle działające interfejsy 840 25.4.3. Rozwiązanie - klasa interfejsu 843 25.4.4. Dziedziczenie a kontenery 846 25.5. Bity, bajty i słowa 848 25.5.1. Bity i operacje na bitach 849 25.5.2. Klasa bitset 853 25.5.3. Liczby ze znakiem i bez znaku 854 25.5.4. Manipulowanie bitami 858 25.5.5. Pola bitowe 860 25.5.6. Przykład - proste szyfrowanie 861 25.6. Standardy pisania kodu 865 25.6.1. Jaki powinien być standard kodowania 866 25.6.2. Przykładowe zasady 868 25.6.3. Prawdziwe standardy kodowania 873 Rozdział 26. Testowanie 879 26.1. Czego chcemy 880 26.1.1. Zastrzeżenie 881 26.2. Dowody 881 26.3. Testowanie 881 26.3.1. Testowanie regresyjne 882 26.3.2. Testowanie jednostkowe 883 26.3.3. Algorytmy i niealgorytmy 889 26.3.4. Testy systemowe 896 26.3.5. Znajdowanie założeń, które się nie potwierdzają 897 26.4. Projektowanie pod kątem testowania 898 26.5. Debugowanie 899 26.6. Wydajność 899 26.6.1. Kontrolowanie czasu 901 26.7. Źródła 903 Rozdział 27. Język C 907 27.1. C i C++ to rodzeństwo 908 27.1.1. Zgodność języków C i C++ 909 27.1.2. Co jest w języku C++, czego nie ma w C 911 27.1.3. Biblioteka standardowa języka C 912 27.2. Funkcje 913 27.2.1. Brak możliwości przeciążania nazw funkcji 913 27.2.2. Sprawdzanie typów argumentów funkcji 914 27.2.3. Definicje funkcji 915 27.2.4. Wywoływanie C z poziomu C++ i C++ z poziomu C 917 27.2.5. Wskaźniki na funkcje 919 27.3. Mniej ważne różnice między językami 920 27.3.1. Przestrzeń znaczników struktur 920 27.3.2. Słowa kluczowe 921 27.3.3. Definicje 922 27.3.4. Rzutowanie w stylu języka C 923 27.3.5. Konwersja typu void* 924 27.3.6. Typ enum 925 27.3.7. Przestrzenie nazw 925 27.4. Pamięć wolna 926 27.5. Łańcuchy w stylu języka C 927 27.5.1. Łańcuchy w stylu języka C i const 930 27.5.2. Operacje na bajtach 930 27.5.3. Przykład - funkcja strcpy() 931 27.5.4. Kwestia stylu 931 27.6. Wejście i wyjście - nagłówek stdio 932 27.6.1. Wyjście 932 27.6.2. Wejście 933 27.6.3. Pliki 935 27.7. Stałe i makra 935 27.8. Makra 936 27.8.1. Makra podobne do funkcji 937 27.8.2. Makra składniowe 938 27.8.3. Kompilacja warunkowa 939 27.9. Przykład - kontenery intruzyjne 940 DODATKI 949 Dodatek A. Zestawienie własności języka 951 A.1. Opis ogólny 952 A.2. Literały 954 A.3. Identyfikatory 957 A.4. Zakres, pamięć oraz czas trwania 958 A.5. Wyrażenia 961 A.6. Instrukcje 970 A.7. Deklaracje 972 A.8. Typy wbudowane 973 A.9. Funkcje 976 A.10. Typy zdefiniowane przez użytkownika 980 A.11. Wyliczenia 980 A.12. Klasy 981 A.13. Szablony 992 A.14. Wyjątki 995 A.15. Przestrzenie nazw 997 A.16. Aliasy 997 A.17. Dyrektywy preprocesora 998 Dodatek B. Biblioteka standardowa 1001 B.1. Przegląd 1002 B.2. Obsługa błędów 1005 B.3. Iteratory 1007 B.4. Kontenery 1011 B.5. Algorytmy 1018 B.6. Biblioteka STL 1026 B.7. Strumienie wejścia i wyjścia 1032 B.8. Przetwarzanie łańcuchów 1037 B.9. Obliczenia 1041 B.10. Czas 1045 B.11. Funkcje biblioteki standardowej C 1046 B.12. Inne biblioteki 1054 Dodatek C. Podstawy środowiska Visual Studio 1055 C.1. Uruchamianie programu 1056 C.2. Instalowanie środowiska Visual Studio 1056 C.3. Tworzenie i uruchamianie programu 1056 C.4. Później 1058 Dodatek D. Instalowanie biblioteki FLTK 1059 D.1. Wprowadzenie 1060 D.2. Pobieranie biblioteki FLTK z internetu 1060 D.3. Instalowanie biblioteki FLTK 1060 D.4. Korzystanie z biblioteki FLTK w Visual Studio 1061 D.5. Sprawdzanie, czy wszystko działa 1062 Dodatek E. Implementacja GUI 1063 E.1. Implementacja wywołań zwrotnych 1064 E.2. Implementacja klasy Widget 1065 E.3. Implementacja klasy Window 1066 E.4. Klasa Vector_ref 1067 E.5. Przykład - widgety 1068 Słowniczek 1071 Bibliografia 1077 Zdjęcia 1081 O autorze: Dr Bjarne Stroustrup może mówić o sobie, że jest ojcem C++: zaprojektował go i jako pierwszy zaimplementował. Jest dyrektorem działu technologicznego banku Morgan Stanley w Nowym Jorku i profesorem wizytującym w Columbia University. Wcześniej pracował w Bell Labs, AT&T Labs oraz Texas A&M University. Otrzymał wiele wyróżnień, w tym przyznawaną przez National Academy of Engineering Nagrodę Charlesa Starka Drapera. Jest członkiem National Academy of Engineering, Institute of Electrical and Electronics Engineers (IEEE) oraz Association for Computing Machinery (ACM).

Specyfikacja

Autor
  • Bjarne Stroustrup
Wybrani autorzy
  • Bjarne Stroustrup
Wybrane wydawnictwa
  • Helion
Rok wydania
  • 2020
Kategorie
  • Programowanie
Ilość stron
  • 1088