Programowanie Teoria i praktyka z wykorzystaniem C++ Wydanie III

179.00

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 programistyczneInfrastruktura algorytmicznaBiblioteka standardowa C++Instrukcje sterujące i obsługa błędówImplementacja i wykorzystanie funkcjiKontrola typówInterfejsy klasIndywidualizacja operacji wejścia i wyjściaProjektowanie klas graficznychWektory i pamięć wolnaKontenery i iteratoryProgramowanie systemów wbudowanychMakraWykorzystaj wiedzę Bjarne Stroustrupa i pisz profesjonalne programy w C++!Spis treści:Wstęp 19Słowo do studentów 21Słowo do nauczycieli 22Standard ISO C++ 23Pomoc 23Podziękowania 24Uwagi do czytelnika 250.1. Struktura książki 260.1.1. Informacje ogólne 270.1.2. Ćwiczenia, praca domowa itp. 280.1.3. Po przeczytaniu tej książki 290.2. Filozofia nauczania i uczenia się 290.2.1. Kolejność tematów 320.2.2. Programowanie a język programowania 340.2.3. Przenośność 340.3. Programowanie a informatyka 350.4. Kreatywność i rozwiązywanie problemów 350.5. Uwagi i komentarze czytelników 350.6. Bibliografia 360.7. Noty biograficzne 36Bjarne Stroustrup 36Lawrence „Pete” Petersen 37Rozdział 1. Komputery, ludzie i programowanie 391.1. Wstęp 401.2. Oprogramowanie 401.3. Ludzie 421.4. Informatyka 451.5. Komputery są wszędzie 461.5.1. Komputery z ekranem i bez 461.5.2. Transport 471.5.3. Telekomunikacja 481.5.4. Medycyna 501.5.5. Informacja 511.5.6. Sięgamy w kosmos 531.5.7. I co z tego 541.6. Ideały dla programistów 54CZĘŚĆ I. PODSTAWY 61Rozdział 2. Witaj, świecie! 632.1. Programy 642.2. Klasyczny pierwszy program 642.3. Kompilacja 672.4. Łączenie 692.5. Środowiska programistyczne 70Rozdział 3. Obiekty, typy i wartości 773.1. Dane wejściowe 783.2. Zmienne 803.3. Typy danych wejściowych 813.4. Operacje i operatory 823.5. Przypisanie i inicjalizacja 853.5.1. Przykład wykrywania powtarzających się słów 873.6. Złożone operatory przypisania 893.6.1. Przykład zliczania powtarzających się słów 893.7. Nazwy 903.8. Typy i obiekty 923.9. Kontrola typów 943.9.1. Konwersje bezpieczne dla typów 953.9.2. Konwersje niebezpieczne dla typów 96Rozdział 4. Wykonywanie obliczeń 1034.1. Wykonywanie obliczeń 1044.2. Cele i narzędzia 1054.3. Wyrażenia 1074.3.1. Wyrażenia stałe 1084.3.2. Operatory 1104.3.3. Konwersje 1114.4. Instrukcje 1124.4.1. Selekcja 1134.4.2. Iteracja 1194.5. Funkcje 1234.5.1. Po co zaprzątać sobie głowę funkcjami 1244.5.2. Deklarowanie funkcji 1264.6. Wektor 1264.6.1. Przeglądanie zawartości wektora 1284.6.2. Powiększanie wektora 1284.6.3. Przykład wczytywania liczb do programu 1294.6.4. Przykład z użyciem tekstu 1314.7. Właściwości języka 133Rozdział 5. Błędy 1395.1. Wstęp 1405.2. Źródła błędów 1415.3. Błędy kompilacji 1425.3.1. Błędy składni 1425.3.2. Błędy typów 1435.3.3. Niebłędy 1445.4. Błędy konsolidacji 1455.5. Błędy czasu wykonania 1465.5.1. Rozwiązywanie problemu przez wywołującego 1475.5.2. Rozwiązywanie problemu przez wywoływanego 1485.5.3. Raportowanie błędów 1495.6. Wyjątki 1515.6.1. Nieprawidłowe argumenty 1515.6.2. Błędy zakresu 1525.6.3. Nieprawidłowe dane wejściowe 1545.6.4. Błędy zawężania zakresu 1565.7. Błędy logiczne 1575.8. Szacowanie 1595.9. Debugowanie 1615.9.1. Praktyczna rada dotycząca debugowania 1625.10. Warunki wstępne i końcowe 1655.10.1. Warunki końcowe 1675.11. Testowanie 168Rozdział 6. Pisanie programu 1756.1. Problem 1766.2. Przemyślenie problemu 1766.2.1. Etapy rozwoju oprogramowania 1776.2.2. Strategia 1776.3. Wracając do kalkulatora 1796.3.1. Pierwsza próba 1806.3.2. Tokeny 1826.3.3. Implementowanie tokenów 1836.3.4. Używanie tokenów 1856.3.5. Powrót do tablicy 1866.4. Gramatyki 1886.4.1. Dygresja – gramatyka języka angielskiego 1926.4.2. Pisanie gramatyki 1936.5. Zamiana gramatyki w kod 1946.5.1. Implementowanie zasad gramatyki 1946.5.2. Wyrażenia 1956.5.3. Składniki 1986.5.4. Podstawowe elementy wyrażeń 2006.6. Wypróbowywanie pierwszej wersji 2006.7. Wypróbowywanie drugiej wersji 2046.8. Strumienie tokenów 2056.8.1. Implementacja typu Token_stream 2076.8.2. Wczytywanie tokenów 2086.8.3. Wczytywanie liczb 2106.9. Struktura programu 210Rozdział 7. Kończenie programu 2177.1. Wprowadzenie 2187.2. Wejście i wyjście 2187.3. Obsługa błędów 2207.4. Liczby ujemne 2247.5. Reszta z dzielenia 2257.6. Oczyszczanie kodu 2267.6.1. Stałe symboliczne 2277.6.2. Użycie funkcji 2297.6.3. Układ kodu 2307.6.4. Komentarze 2317.7. Odzyskiwanie sprawności po wystąpieniu błędu 2327.8. Zmienne 2357.8.1. Zmienne i definicje 2357.8.2. Wprowadzanie nazw 2397.8.3. Nazwy predefiniowane 2427.8.4. Czy to już koniec? 242Rozdział 8. Szczegóły techniczne – funkcje itp. 2478.1. Szczegóły techniczne 2488.2. Deklaracje i definicje 2498.2.1. Rodzaje deklaracji 2528.2.2. Deklaracje stałych i zmiennych 2528.2.3. Domyślna inicjalizacja 2548.3. Pliki nagłówkowe 2548.4. Zakres 2568.5. Wywoływanie i wartość zwrotna funkcji 2618.5.1. Deklarowanie argumentów i typu zwrotnego 2618.5.2. Zwracanie wartości 2638.5.3. Przekazywanie przez wartość 2648.5.4. Przekazywanie argumentów przez stałą referencję 2658.5.5. Przekazywanie przez referencję 2678.5.6. Przekazywanie przez wartość a przez referencję 2698.5.7. Sprawdzanie argumentów i konwersja 2718.5.8. Implementacja wywołań funkcji 2728.5.9. Funkcje constexpr 2768.6. Porządek wykonywania instrukcji 2778.6.1. Wartościowanie wyrażeń 2788.6.2. Globalna inicjalizacja 2798.7. Przestrzenie nazw 2808.7.1. Dyrektywy i deklaracje using 281Rozdział 9. Szczegóły techniczne – klasy itp. 2879.1. Typy zdefiniowane przez użytkownika 2889.2. Klasy i składowe klas 2899.3. Interfejs i implementacja 2899.4. Tworzenie klas 2919.4.1. Struktury i funkcje 2919.4.2. Funkcje składowe i konstruktory 2939.4.3. Ukrywanie szczegółów 2959.4.4. Definiowanie funkcji składowych 2969.4.5. Odwoływanie się do bieżącego obiektu 2989.4.6. Raportowanie błędów 2999.5. Wyliczenia 3009.5.1. „Zwykłe” wyliczenia 3019.6. Przeciążanie operatorów 3029.7. Interfejsy klas 3039.7.1. Typy argumentów 3049.7.2. Kopiowanie 3069.7.3. Konstruktory domyślne 3079.7.4. Stałe funkcje składowe 3109.7.5. Składowe i funkcje pomocnicze 3119.8. Klasa Date 313CZĘŚĆ II. WEJŚCIE I WYJŚCIE 321Rozdział 10. Strumienie wejścia i wyjścia 32310.1. Wejście i wyjście 32410.2. Model strumieni wejścia i wyjścia 32510.3. Pliki 32710.4. Otwieranie pliku 32810.5. Odczytywanie i zapisywanie plików 33010.6. Obsługa błędów wejścia i wyjścia 33210.7. Wczytywanie pojedynczej wartości 33410.7.1. Rozłożenie problemu na mniejsze części 33610.7.2. Oddzielenie warstwy komunikacyjnej od funkcji 33910.8. Definiowanie operatorów wyjściowych 34010.9. Definiowanie operatorów wejściowych 34110.10. Standardowa pętla wejściowa 34210.11. Wczytywanie pliku strukturalnego 34310.11.1. Reprezentacja danych w pamięci 34410.11.2. Odczytywanie struktur wartości 34510.11.3. Zmienianie reprezentacji 349Rozdział 11. Indywidualizacja operacji wejścia i wyjścia 35311.1. Regularność i nieregularność 35411.2. Formatowanie danych wyjściowych 35411.2.1. Wysyłanie na wyjście liczb całkowitych 35511.2.2. Przyjmowanie na wejściu liczb całkowitych 35611.2.3. Wysyłanie na wyjście liczb zmiennoprzecinkowych 35711.2.4. Precyzja 35811.2.5. Pola 35911.3. Otwieranie plików i pozycjonowanie 36111.3.1. Tryby otwierania plików 36111.3.2. Pliki binarne 36211.3.3. Pozycjonowanie w plikach 36511.4. Strumienie łańcuchowe 36511.5. Wprowadzanie danych wierszami 36711.6. Klasyfikowanie znaków 36811.7. Stosowanie niestandardowych separatorów 37011.8. Zostało jeszcze tyle do poznania 376Rozdział 12. Projektowanie klas graficznych 38112.1. Czemu grafika? 38212.2. Model graficzny 38312.3. Pierwszy przykład 38412.4. Biblioteka GUI 38712.5. Współrzędne 38812.6. Figury geometryczne 38912.7. Używanie klas figur geometrycznych 38912.7.1. Nagłówki graficzne i funkcja main 39012.7.2. Prawie puste okno 39012.7.3. Klasa Axis 39212.7.4. Rysowanie wykresu funkcji 39412.7.5. Wielokąty 39412.7.6. Prostokąty 39512.7.7. Wypełnianie kolorem 39712.7.8. Tekst 39812.7.9. Obrazy 39912.7.10. Jeszcze więcej grafik 40012.8. Uruchamianie programu 40112.8.1. Pliki źródłowe 402Rozdział 13. Klasy graficzne 40713.1. Przegląd klas graficznych 40813.2. Klasy Point i Line 41013.3. Klasa Lines 41213.4. Klasa Color 41513.5. Typ Line_style 41613.6. Typ Open_polyline 41913.7. Typ Closed_polyline 42013.8. Typ Polygon 42113.9. Typ Rectangle 42313.10. Wykorzystywanie obiektów bez nazw 42713.11. Typ Text 42913.12. Typ Circle 43113.13. Typ Ellipse 43213.14. Typ Marked_polyline 43413.15. Typ Marks 43513.16. Typ Mark 43613.17. Typ Image 437Rozdział 14. Projektowanie klas graficznych 44514.1. Zasady projektowania 44614.1.1. Typy 44614.1.2. Operacje 44714.1.3. Nazewnictwo 44814.1.4. Zmienność 45014.2. Klasa Shape 45014.2.1. Klasa abstrakcyjna 45214.2.2. Kontrola dostępu 45314.2.3. Rysowanie figur 45614.2.4. Kopiowanie i zmienność 45814.3. Klasy bazowe i pochodne 46014.3.1. Układ obiektu 46114.3.2. Tworzenie podklas i definiowanie funkcji wirtualnych 46314.3.3. Przesłanianie 46314.3.4. Dostęp 46514.3.5. Czyste funkcje wirtualne 46614.4. Zalety programowania obiektowego 467Rozdział 15. Graficzne przedstawienie funkcji i danych 47315.1. Wprowadzenie 47415.2. Rysowanie wykresów prostych funkcji 47415.3. Typ Function 47815.3.1. Argumenty domyślne 47915.3.2. Więcej przykładów 48015.3.3. Wyrażenia lambda 48115.4. Typ Axis 48215.5. Wartość przybliżona funkcji wykładniczej 48415.6. Przedstawianie danych na wykresach 48815.6.1. Odczyt danych z pliku 49015.6.2. Układ ogólny 49115.6.3. Skalowanie danych 49215.6.4. Budowanie wykresu 493Rozdział 16. Graficzne interfejsy użytkownika 49916.1. Różne rodzaje interfejsów użytkownika 50016.2. Przycisk Next 50116.3. Proste okno 50216.3.1. Funkcje zwrotne 50316.3.2. Pętla oczekująca 50616.3.3. Wyrażenie lambda jako wywołanie zwrotne 50716.4. Typ Button i inne pochodne typu Widget 50716.4.1. Widgety 50816.4.2. Przyciski 50916.4.3. Widgety In_box i Out_box 51016.4.4. Menu 51016.5. Przykład 51116.6. Inwersja kontroli 51416.7. Dodawanie menu 51516.8. Debugowanie kodu GUI 519CZĘŚĆ III. DANE I ALGORYTMY 525Rozdział 17. Wektory i pamięć wolna 52717.1. Wprowadzenie 52817.2. Podstawowe wiadomości na temat typu vector 52917.3. Pamięć, adresy i wskaźniki 53117.3.1. Operator sizeof 53317.4. Pamięć wolna a wskaźniki 53417.4.1. Alokacja obiektów w pamięci wolnej 53517.4.2. Dostęp poprzez wskaźniki 53617.4.3. Zakresy 53717.4.4. Inicjalizacja 53817.4.5. Wskaźnik zerowy 53917.4.6. Dealokacja pamięci wolnej 54017.5. Destruktory 54217.5.1. Generowanie destruktorów 54417.5.2. Destruktory a pamięć wolna 54417.6. Dostęp do elementów 54617.7. Wskaźniki na obiekty klas 54717.8. Babranie się w typach – void* i rzutowanie 54817.9. Wskaźniki i referencje 55017.9.1. Wskaźniki i referencje jako parametry 55117.9.2. Wskaźniki, referencje i dziedziczenie 55217.9.3. Przykład – listy 55317.9.4. Operacje na listach 55417.9.5. Zastosowania list 55617.10. Wskaźnik this 55717.10.1. Więcej przykładów użycia typu Link 559Rozdział 18. Wektory i tablice 56518.1. Wprowadzenie 56618.2. Inicjalizacja 56618.3. Kopiowanie 56818.3.1. Konstruktory kopiujące 56918.3.2. Przypisywanie z kopiowaniem 57118.3.3. Terminologia związana z kopiowaniem 57318.3.4. Przenoszenie 57418.4. Podstawowe operacje 57618.4.1. Konstruktory jawne 57818.4.2. Debugowanie konstruktorów i destruktorów 57918.5. Uzyskiwanie dostępu do elementów wektora 58118.5.1. Problem stałych wektorów 58218.6. Tablice 58318.6.1. Wskaźniki na elementy tablicy 58418.6.2. Wskaźniki i tablice 58618.6.3. Inicjalizowanie tablic 58818.6.4. Problemy ze wskaźnikami 58918.7. Przykłady – palindrom 59218.7.1. Wykorzystanie łańcuchów 59218.7.2. Wykorzystanie tablic 59318.7.3. Wykorzystanie wskaźników 594Rozdział 19. Wektory, szablony i wyjątki 59919.1. Analiza problemów 60019.2. Zmienianie rozmiaru 60219.2.1. Reprezentacja 60319.2.2. Rezerwacja pamięci i pojemność kontenera 60419.2.3. Zmienianie rozmiaru 60519.2.4. Funkcja push_back() 60519.2.5. Przypisywanie 60619.2.6. Podsumowanie dotychczasowej pracy nad typem vector 60819.3. Szablony 60819.3.1. Typy jako parametry szablonów 60919.3.2. Programowanie ogólne 61119.3.3. Koncepcje 61319.3.4. Kontenery a dziedziczenie 61519.3.5. Liczby całkowite jako parametry szablonów 61619.3.6. Dedukcja argumentów szablonu 61819.3.7. Uogólnianie wektora 61819.4. Sprawdzanie zakresu i wyjątki 62119.4.1. Dygresja – uwagi projektowe 62219.4.2. Wyznanie na temat makr 62419.5. Zasoby i wyjątki 62519.5.1. Potencjalne problemy z zarządzaniem zasobami 62619.5.2. Zajmowanie zasobów jest inicjalizacją 62819.5.3. Gwarancje 62819.5.4. Obiekt unique_ptr 63019.5.5. Zwrot przez przeniesienie 63119.5.6. Technika RAII dla wektora 631Rozdział 20. Kontenery i iteratory 63720.1. Przechowywanie i przetwarzanie danych 63820.1.1. Praca na danych 63820.1.2. Uogólnianie kodu 63920.2. Ideały twórcy biblioteki STL 64220.3. Sekwencje i iteratory 64520.3.1. Powrót do przykładu 64720.4. Listy powiązane 64920.4.1. Operacje list 65020.4.2. Iteracja 65120.5. Jeszcze raz uogólnianie wektora 65320.5.1. Przeglądanie kontenera 65520.5.2. Słowo kluczowe auto 65620.6. Przykład – prosty edytor tekstu 65720.6.1. Wiersze 65920.6.2. Iteracja 66020.7. Typy vector, list oraz string 66320.7.1. Funkcje insert() i erase() 66420.8. Dostosowanie wektora do biblioteki STL 66620.9. Dostosowywanie wbudowanych tablic do STL 66820.10. Przegląd kontenerów 67020.10.1. Kategorie iteratorów 672Rozdział 21. Algorytmy i słowniki 67721.1. Algorytmy biblioteki standardowej 67821.2. Najprostszy algorytm – find() 67921.2.1. Kilka przykładów z programowania ogólnego 68121.3. Ogólny algorytm wyszukiwania – find_if() 68221.4. Obiekty funkcyjne 68321.4.1. Abstrakcyjne spojrzenie na obiekty funkcyjne 68421.4.2. Predykaty składowych klas 68621.4.3. Wyrażenia lambda 68721.5. Algorytmy numeryczne 68821.5.1. Akumulacja 68821.5.2. Uogólnianie funkcji accumulate() 68921.5.3. Iloczyn skalarny 69121.5.4. Uogólnianie funkcji inner_product() 69221.6. Kontenery asocjacyjne 69321.6.1. Słowniki 69321.6.2. Opis ogólny kontenera map 69521.6.3. Jeszcze jeden przykład zastosowania słownika 69921.6.4. Kontener unordered_map 70121.6.5. Zbiory 70321.7. Kopiowanie 70421.7.1. Funkcja copy() 70521.7.2. Iteratory strumieni 70521.7.3. Utrzymywanie porządku przy użyciu kontenera set 70821.7.4. Funkcja copy_if() 70821.8. Sortowanie i wyszukiwanie 70921.9. Algorytmy kontenerowe 711CZĘŚĆ IV. POSZERZANIE HORYZONTÓW 717Rozdział 22. Ideały i historia 71922.1. Historia, ideały i profesjonalizm 72022.1.1. Cele i filozofie języków programowania 72022.1.2. Ideały programistyczne 72222.1.3. Style i paradygmaty 72822.2. Krótka historia języków programowania 73122.2.1. Pierwsze języki 73222.2.2. Korzenie nowoczesnych języków programowania 73322.2.3. Rodzina Algol 73822.2.4. Simula 74522.2.5. C 74722.2.6. C++ 75022.2.7. Dziś 75222.2.8. Źródła informacji 753Rozdział 23. Przetwarzanie tekstu 75723.1. Tekst 75823.2. Łańcuchy 75823.3. Strumienie wejścia i wyjścia 76223.4. Słowniki 76223.4.1. Szczegóły implementacyjne 76723.5. Problem 76923.6. W
rażenia regularne 77123.6.1. Surowe literały łańcuchowe 77323.7. Wyszukiwanie przy użyciu wyrażeń regularnych 77423.8. Składnia wyrażeń regularnych 77623.8.1. Znaki i znaki specjalne 77623.8.2. Rodzaje znaków 77723.8.3. Powtórzenia 77823.8.4. Grupowanie 77923.8.5. Alternatywa 77923.8.6. Zbiory i przedziały znaków 78023.8.7. Błędy w wyrażeniach regularnych 78123.9. Dopasowywanie przy użyciu wyrażeń regularnych 78323.10. Źródła 787Rozdział 24. Działania na liczbach 79124.1. Wprowadzenie 79224.2. Rozmiar, precyzja i przekroczenie zakresu 79224.2.1. Ograniczenia typów liczbowych 79524.3. Tablice 79624.4. Tablice wielowymiarowe w stylu języka C 79724.5. Biblioteka Matrix 79824.5.1. Wymiary i dostęp 79924.5.2. Macierze jednowymiarowe 80124.5.3. Macierze dwuwymiarowe 80424.5.4. Wejście i wyjście macierzy 80624.5.5. Macierze trójwymiarowe 80724.6. Przykład – rozwiązywanie równań liniowych 80824.6.1. Klasyczna eliminacja Gaussa 80924.6.2. Wybór elementu centralnego 81024.6.3. Testowanie 81124.7. Liczby losowe 81224.8. Standardowe funkcje matematyczne 81524.9. Liczby zespolone 81624.10. Źródła 818Rozdział 25. Programowanie systemów wbudowanych 82325.1. Systemy wbudowane 82425.2. Podstawy 82725.2.1. Przewidywalność 82925.2.2. Ideały 82925.2.3. Życie z awarią 83025.3. Zarządzanie pamięcią 83225.3.1. Problemy z pamięcią wolną 83325.3.2. Alternatywy dla ogólnej pamięci wolnej 83625.3.3. Przykład zastosowania puli 83725.3.4. Przykład użycia stosu 83825.4. Adresy, wskaźniki i tablice 83925.4.1. Niekontrolowane konwersje 83925.4.2. Problem – źle działające interfejsy 84025.4.3. Rozwiązanie – klasa interfejsu 84325.4.4. Dziedziczenie a kontenery 84625.5. Bity, bajty i słowa 84825.5.1. Bity i operacje na bitach 84925.5.2. Klasa bitset 85325.5.3. Liczby ze znakiem i bez znaku 85425.5.4. Manipulowanie bitami 85825.5.5. Pola bitowe 86025.5.6. Przykład – proste szyfrowanie 86125.6. Standardy pisania kodu 86525.6.1. Jaki powinien być standard kodowania 86625.6.2. Przykładowe zasady 86825.6.3. Prawdziwe standardy kodowania 873Rozdział 26. Testowanie 87926.1. Czego chcemy 88026.1.1. Zastrzeżenie 88126.2. Dowody 88126.3. Testowanie 88126.3.1. Testowanie regresyjne 88226.3.2. Testowanie jednostkowe 88326.3.3. Algorytmy i niealgorytmy 88926.3.4. Testy systemowe 89626.3.5. Znajdowanie założeń, które się nie potwierdzają 89726.4. Projektowanie pod kątem testowania 89826.5. Debugowanie 89926.6. Wydajność 89926.6.1. Kontrolowanie czasu 90126.7. Źródła 903Rozdział 27. Język C 90727.1. C i C++ to rodzeństwo 90827.1.1. Zgodność języków C i C++ 90927.1.2. Co jest w języku C++, czego nie ma w C 91127.1.3. Biblioteka standardowa języka C 91227.2. Funkcje 91327.2.1. Brak możliwości przeciążania nazw funkcji 91327.2.2. Sprawdzanie typów argumentów funkcji 91427.2.3. Definicje funkcji 91527.2.4. Wywoływanie C z poziomu C++ i C++ z poziomu C 91727.2.5. Wskaźniki na funkcje 91927.3. Mniej ważne różnice między językami 92027.3.1. Przestrzeń znaczników struktur 92027.3.2. Słowa kluczowe 92127.3.3. Definicje 92227.3.4. Rzutowanie w stylu języka C 92327.3.5. Konwersja typu void* 92427.3.6. Typ enum 92527.3.7. Przestrzenie nazw 92527.4. Pamięć wolna 92627.5. Łańcuchy w stylu języka C 92727.5.1. Łańcuchy w stylu języka C i const 93027.5.2. Operacje na bajtach 93027.5.3. Przykład – funkcja strcpy() 93127.5.4. Kwestia stylu 93127.6. Wejście i wyjście – nagłówek stdio 93227.6.1. Wyjście 93227.6.2. Wejście 93327.6.3. Pliki 93527.7. Stałe i makra 93527.8. Makra 93627.8.1. Makra podobne do funkcji 93727.8.2. Makra składniowe 93827.8.3. Kompilacja warunkowa 93927.9. Przykład – kontenery intruzyjne 940DODATKI 949Dodatek A. Zestawienie własności języka 951A.1. Opis ogólny 952A.2. Literały 954A.3. Identyfikatory 957A.4. Zakres, pamięć oraz czas trwania 958A.5. Wyrażenia 961A.6. Instrukcje 970A.7. Deklaracje 972A.8. Typy wbudowane 973A.9. Funkcje 976A.10. Typy zdefiniowane przez użytkownika 980A.11. Wyliczenia 980A.12. Klasy 981A.13. Szablony 992A.14. Wyjątki 995A.15. Przestrzenie nazw 997A.16. Aliasy 997A.17. Dyrektywy preprocesora 998Dodatek B. Biblioteka standardowa 1001B.1. Przegląd 1002B.2. Obsługa błędów 1005B.3. Iteratory 1007B.4. Kontenery 1011B.5. Algorytmy 1018B.6. Biblioteka STL 1026B.7. Strumienie wejścia i wyjścia 1032B.8. Przetwarzanie łańcuchów 1037B.9. Obliczenia 1041B.10. Czas 1045B.11. Funkcje biblioteki standardowej C 1046B.12. Inne biblioteki 1054Dodatek C. Podstawy środowiska Visual Studio 1055C.1. Uruchamianie programu 1056C.2. Instalowanie środowiska Visual Studio 1056C.3. Tworzenie i uruchamianie programu 1056C.4. Później 1058Dodatek D. Instalowanie biblioteki FLTK 1059D.1. Wprowadzenie 1060D.2. Pobieranie biblioteki FLTK z internetu 1060D.3. Instalowanie biblioteki FLTK 1060D.4. Korzystanie z biblioteki FLTK w Visual Studio 1061D.5. Sprawdzanie, czy wszystko działa 1062Dodatek E. Implementacja GUI 1063E.1. Implementacja wywołań zwrotnych 1064E.2. Implementacja klasy Widget 1065E.3. Implementacja klasy Window 1066E.4. Klasa Vector_ref 1067E.5. Przykład – widgety 1068Słowniczek 1071Bibliografia 1077Zdjęcia 1081O 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).

Informatyka

70.21.z, autostradą a1 bramki rozmieszczenie, cena za netflixa, muzyka norweska, rozliczenie faktury zaliczkowej wzór, powrót do polski z norwegii, łódzkie, stan w usa w górach skalistych, 4218, rozporządzenie ministra finansów w sprawie poboru zaliczek na podatek dochodowy, podatwk

dłużnicy warszawa