Programowanie. Teoria i praktyka w C++ wyd. 4 - Bjarne Stroustrup [KSIĄŻKA] Wrocław

Książka twórcy języka C++ Chłoń wiedzę od samego twórcy języka C++! Chcesz naprawdę dobrze opanować C++? Ucz się od najlepszego Bjarne Stroustrup, twórca tego języka, jak nikt inny potrafi wyjaśnić zarówno podstawy, jak i najbardziej zaawansowane metody programowania. To on zaprojektował i …

od 89,40 Najbliżej: 1,6 km

Liczba ofert: 1

Oferta sklepu

Opis

Książka twórcy języka C++ Chłoń wiedzę od samego twórcy języka C++! Chcesz naprawdę dobrze opanować C++? Ucz się od najlepszego Bjarne Stroustrup, twórca tego języka, jak nikt inny potrafi wyjaśnić zarówno podstawy, jak i najbardziej zaawansowane metody programowania. To on zaprojektował i zaimplementował C++, a w tej książce dzieli się swoim bogatym doświadczeniem i ekspercką wiedzą. Teraz dostępną także dla Ciebie! Programowanie. Teoria i praktyka w C++ to kompletny przewodnik, który krok po kroku odkrywa tajniki jednego z najważniejszych i najpotężniejszych języków programowania. Najnowsze wydanie zostało zaktualizowane i uwzględnia standardy C++20 i C++23, dzięki czemu będziesz się uczyć na przykładach zgodnych z aktualnym kierunkiem rozwoju języka. Dzięki tej książce dowiesz się, jak pisać kod nie tylko wydajny, ale i elegancki. Poznasz zasady, które z powodzeniem zastosujesz również w innych językach programowania. Autor wprowadzi Cię w świat kluczowych paradygmatów programowania od proceduralnego, przez obiektowe, aż po generyczne i pokaże, jak tworzyć bezpieczne, praktyczne i łatwe w utrzymaniu programy. Oprócz technik programowania wysokopoziomowego opanujesz techniki niższego poziomu, niezbędne do efektywnego korzystania z możliwości sprzętu. Znajdziesz tu zarówno solidne podstawy, jak i bardziej zaawansowane zagadnienia, takie jak: opis pojęć i technik programistycznych instrukcje sterujące, obsługa błędów, funkcje i system typów obsługa danych liczbowych i tekstu praca z graficznym interfejsem użytkownika kontenery i algorytmy w bibliotece STL parametryzacja klas i funkcji Niezależnie od tego, czy dopiero zaczynasz przygodę z C++, czy chcesz rozwinąć swoje umiejętności tu znajdziesz wszystko, czego potrzebujesz, aby pisać doskonały kod. Spis treści: Wstęp Poprzednie wydania Podziękowania Uwagi do czytelnika 0.1. Struktura książki 0.1.1. Informacje ogólne 0.1.2. Ćwiczenia, praca domowa itp. 0.1.3. Po przeczytaniu tej książki 0.2. Filozofia nauczania i uczenia się 0.2.1. Słowo do studentów 0.2.2. Słowo do nauczycieli 0.3. Standard ISO C++ 0.3.1. Przenośność 0.3.2. Gwarancje 0.3.3. Historia języka C++ w pigułce 0.4. Pomoc PPP 0.4.1. Zasoby sieciowe 0.5. Biografia autora 0.6. Bibliografia Część I. Podstawy 1. Witaj, świecie! 1.1. Programy 1.2. Klasyczny pierwszy program 1.3. Kompilacja 1.4. Łączenie 1.5. Środowiska programistyczne 2. Obiekty, typy i wartości 2.1. Dane wejściowe 2.2. Zmienne 2.3. Typy danych wejściowych 2.4. Operacje i operatory 2.5. Przypisanie i inicjalizacja 2.5.1. Przykład wykrywania powtarzających się słów 2.5.2. Złożone operatory przypisania 2.5.3. Przykład: szukanie powtarzających się słów 2.6. Nazwy 2.7. Typy i obiekty 2.8. Bezpieczeństwo typów 2.9. Konwersje 2.10. Dedukcja typów: auto 3. Wykonywanie obliczeń 3.1. Wykonywanie obliczeń 3.2. Cele i narzędzia 3.3. Wyrażenia 3.3.1. Wyrażenia stałe 3.3.2. Operatory 3.4. Instrukcje 3.4.1. Selekcja 3.4.2. Iteracja 3.5. Funkcje 3.5.1. Po co zaprzątać sobie głowę funkcjami? 3.5.2. Deklarowanie funkcji 3.6. Wektor 3.6.1. Przeglądanie zawartości wektora 3.6.2. Powiększanie wektora 3.6.3. Przykład wczytywania liczb do programu 3.6.4. Przykład z użyciem tekstu 3.7. Właściwości języka 4. Błędy 4.1. Wstęp 4.2. Źródła błędów 4.3. Błędy kompilacji 4.3.1. Błędy składni 4.3.2. Błędy typów 4.4. Błędy konsolidacji 4.5. Błędy czasu wykonania 4.5.1. Rozwiązywanie problemu przez wywołującego 4.5.2. Rozwiązywanie problemu przez wywoływanego 4.5.3. Raportowanie błędów 4.6. Wyjątki 4.6.1. Nieprawidłowe argumenty 4.6.2. Błędy zakresu 4.6.3. Nieprawidłowe dane wejściowe 4.7. Unikanie i znajdowanie błędów 4.7.1. Szacowanie 4.7.2. Debugowanie 4.7.3. Asercje 4.7.4. Testowanie 4.7.5. Liczby losowe 5. Pisanie programu 5.1. Problem 5.2. Przemyślenie problemu 5.2.1. Etapy rozwoju oprogramowania 5.2.2. Strategia 5.3. Wracając do kalkulatora 5.3.1. Pierwsza próba 5.3.2. Tokeny 5.3.3. Implementowanie tokenów 5.3.4. Używanie tokenów 5.4. Powrót do tablicy 5.4.1. Gramatyki 5.4.2. Pisanie gramatyki 5.5. Zamiana gramatyki w kod 5.5.1. Implementowanie zasad gramatyki 5.5.2. Wyrażenia 5.5.3. Składniki 5.5.4. Podstawowe elementy wyrażeń 5.6. Wypróbowywanie pierwszej wersji 5.7. Wypróbowywanie drugiej wersji 5.8. Strumienie tokenów 5.8.1. Implementacja typu Token_stream 5.8.2. Wczytywanie tokenów 5.8.3. Wczytywanie liczb 5.9. Struktura programu 6. Kończenie programu 6.1. Wprowadzenie 6.2. Wejście i wyjście 6.3. Obsługa błędów 6.4. Liczby ujemne 6.5. Reszta z dzielenia 6.6. Oczyszczanie kodu 6.6.1. Stałe symboliczne 6.6.2. Użycie funkcji 6.6.3. Układ kodu 6.6.4. Komentarze 6.7. Odzyskiwanie sprawności po wystąpieniu błędu 6.8. Zmienne 6.8.1. Zmienne i definicje 6.8.2. Wprowadzanie nazw 6.8.3. Nazwy predefiniowane 6.8.4. Czy to już koniec? 7. Szczegóły techniczne - funkcje itp. 7.1. Szczegóły techniczne 7.2. Deklaracje i definicje 7.2.1. Rodzaje deklaracji 7.2.2. Deklaracje stałych i zmiennych 7.2.3. Domyślna inicjalizacja 7.3. Zakres 7.4. Wywoływanie i wartość zwrotna funkcji 7.4.1. Deklarowanie argumentów i typu zwrotnego 7.4.2. Zwracanie wartości 7.4.3. Przekazywanie przez wartość 7.4.4. Przekazywanie argumentów przez stałą referencję 7.4.5. Przekazywanie przez referencję 7.4.6. Przekazywanie przez wartość a przez referencję 7.4.7. Sprawdzanie argumentów i konwersja 7.4.8. Implementacja wywołań funkcji 7.4.9. Obliczenia w czasie kompilacji 7.4.10. Przyrostkowy typ zwrotny 7.5. Porządek wykonywania instrukcji 7.5.1. Obliczanie wartości wyrażeń 7.5.2. Globalna inicjalizacja 7.6. Przestrzenie nazw 7.6.1. Dyrektywy i deklaracje using 7.7. Moduły i nagłówki 7.7.1. Moduły 7.7.2. Pliki nagłówkowe 8. Szczegóły techniczne - klasy it 8.1. Typy zdefiniowane przez użytkownika 8.2. Klasy i składowe klas 8.3. Interfejs i implementacja 8.4. Tworzenie klasy - Date 8.4.1. Struktury i funkcje 8.4.2. Funkcje składowe i konstruktory 8.4.3. Ukrywanie szczegółów 8.4.4. Definiowanie funkcji składowych 8.4.5. Odwoływanie się do bieżącego obiektu 8.4.6. Raportowanie błędów 8.5. Wyliczenia 8.5.1. "Zwykłe" wyliczenia 8.6. Przeciążanie operatorów 8.7. Interfejsy klas 8.7.1. Typy argumentów 8.7.2. Kopiowanie 8.7.3. Konstruktory domyślne 8.7.4. Stałe funkcje składowe 8.7.5. Funkcje składowe i funkcje pomocnicze 8.7.6. Standard ISO Część II. Wejście i wyjście 9. Strumienie wejścia i wyjścia 9.1. Wejście i wyjście 9.2. Model strumieni wejścia i wyjścia 9.3. Pliki 9.3.1. Otwieranie pliku 9.3.2. Odczytywanie i zapisywanie plików 9.4. Obsługa błędów wejścia i wyjścia 9.5. Wczytywanie pojedynczej wartości 9.5.1. Rozłożenie problemu na mniejsze części 9.5.2. Oddzielenie warstwy komunikacyjnej od funkcji 9.6. Definiowanie operatorów wyjściowych 9.7. Definiowanie operatorów wejściowych 9.8. Standardowa pętla wejściowa 9.9. Wczytywanie pliku strukturalnego 9.9.1. Reprezentacja danych w pamięci 9.9.2. Odczytywanie struktur wartości 9.9.3. Zmienianie reprezentacji 9.10. Formatowanie 9.10.1. Przyjmowanie na wejściu i wysyłanie na wyjście liczb całkowitych 9.10.2. Przyjmowanie na wejściu i wysyłanie na wyjście liczb zmiennoprzecinkowych 9.10.3. Przyjmowanie na wejściu i wysyłanie na wyjście łańcuchów 9.10.4. Przyjmowanie na wejściu i wysyłanie na wyjście znaków 9.10.5. Rozszerzanie wejścia i wyjścia 9.10.6. Funkcja format() 9.11. Strumienie łańcuchowe 10. Projektowanie klas graficznych 10.1. Czemu grafika? 10.2. Model graficzny 10.3. Pierwszy przykład 10.4. Biblioteka GUI 10.5. Współrzędne 10.6. Figury geometryczne 10.7. Używanie klas figur geometrycznych 10.7.1. Klasa Axis 10.7.2. Rysowanie wykresu funkcji 10.7.3. Wielokąty 10.7.4. Prostokąty 10.7.5. Wypełnianie kolorem 10.7.6. Tekst 10.7.7. Obrazy 10.7.8. Jeszcze więcej grafik 10.8. Uruchamianie pierwszego przykładu 10.8.1. Pliki źródłowe 10.8.2. Składanie wszystkiego w całość 11. Klasy graficzne 11.1. Przegląd klas graficznych 11.2. Klasy Point i Line 11.3. Klasa Lines 11.3.1. Inicjalizacja 11.4. Klasa Color 11.5. Typ Line_style 11.6. Linie łamane 11.6.1. Typ Open_polyline 11.6.2. Typ Closed_polyline 11.6.3. Typ Marked_polyline 11.6.4. Typ Marks 11.7. Figury zamknięte 11.7.1. Typ Polygon 11.7.2. Typ Rectangle 11.7.3. Wykorzystywanie obiektów bez nazw 11.7.4. Typ Circle 11.7.5. Typ Ellipse 11.8. Typ Text 11.9. Typ Mark 11.10. Typ Image 12. Projektowanie klas 12.1. Zasady projektowania 12.1.1. Typy 12.1.2. Operacje 12.1.3. Nazewnictwo 12.1.4. Zmienność 12.2. Klasa Shape 12.2.1. Klasa abstrakcyjna 12.2.2. Kontrola dostępu 12.2.3. Rysowanie figur 12.3. Klasy bazowe i pochodne 12.3.1. Układ obiektu 12.3.2. Tworzenie podklas i definiowanie funkcji wirtualnych 12.3.3. Przesłanianie 12.3.4. Dostęp 12.3.5. Czyste funkcje wirtualne 12.4. Inne funkcje klasy Shape 12.4.1. Kopiowanie 12.4.2. Przesuwanie figur 12.5. Zalety programowania obiektowego 13. Graficzne przedstawienie funkcji i danych 13.1. Wprowadzenie 13.2. Rysowanie wykresów prostych funkcji 13.3. Typ Function 13.3.1. Argumenty domyślne 13.3.2. Więcej przykładów 13.3.3. Wyrażenia lambda 13.4. Typ Axis 13.5. Wartość przybliżona funkcji wykładniczej 13.6. Przedstawianie danych na wykresach 13.6.1. Odczyt danych z pliku 13.6.2. Układ ogólny 13.6.3. Skalowanie danych 13.6.4. Budowanie wykresu 14. Graficzne interfejsy użytkownika 14.1. Różne rodzaje interfejsów użytkownika 14.2. Przycisk Dalej 14.3. Proste okno 14.3.1. Pętla oczekująca 14.4. Typ Button i inne pochodne typu Widget 14.4.1. Widgety 14.4.2. Przyciski 14.4.3. Widgety In_box i Out_box 14.4.4. Menu 14.5. Przykład: rysowanie linii 14.5.1. Inwersja kontroli 14.5.2. Dodawanie menu 14.6. Prosta animacja 14.7. Debugowanie kodu GUI Część III. Dane i algorytmy 15. Wektory i pamięć wolna 15.1. Wprowadzenie 15.2. Podstawowe wiadomości na temat typu vector 15.3. Pamięć, adresy i wskaźniki 15.3.1. Operator sizeof 15.4. Pamięć wolna a wskaźniki 15.4.1. Alokacja obiektów w pamięci wolnej 15.4.2. Dostęp poprzez wskaźniki 15.4.3. Inicjalizacja 15.4.4. Wskaźnik zerowy 15.4.5. Dealokacja pamięci wolnej 15.5. Destruktory 15.5.1. Generowanie destruktorów 15.5.2. Destruktory wirtualne 15.6. Dostęp do elementów 15.7. Przykład - listy 15.7.1. Operacje na listach 15.7.2. Zastosowania list 15.8. Wskaźnik this 15.8.1. Więcej przykładów użycia typu Link 16. Tablice, wskaźniki i referencje 16.1. Tablice 16.1.1. Arytmetyka wskaźników 16.2. Wskaźniki i referencje 16.2.1. Wskaźniki i referencje jako parametry 16.2.2. Wskaźniki jako parametry 16.3. Łańcuchy w stylu języka C 16.4. Alternatywy dla wskaźników 16.4.1. Typ span 16.4.2. Typ array 16.4.3. Typ not_null 16.5. Przykłady: palindromy 16.5.1. Wykorzystanie łańcuchów 16.5.2. Wykorzystanie tablic 16.5.3. Wykorzystanie wskaźników 16.5.4. Wykorzystanie typu span 17. Podstawowe operacje 17.1. Wprowadzenie 17.2. Dostęp do elementów 17.3. Inicjalizacja 17.4. Kopiowanie i przenoszenie 17.4.1. Konstruktory kopiujące 17.4.2. Przypisywanie z kopiowaniem 17.4.3. Terminologia związana z kopiowaniem 17.4.4. Przenoszenie 17.5. Podstawowe operacje 17.5.1. Konstruktory jawne 17.5.2. Debugowanie konstruktorów i destruktorów 17.6. Inne przydatne operacje 17.6.1. Operatory porównań 17.6.2. Pokrewne operatory 17.7. Pozostałe problemy z klasą Vector 17.8. Zmienianie rozmiaru 17.8.1. Reprezentacja 17.8.2. Rezerwacja pamięci i pojemność kontenera 17.8.3. Zmienianie rozmiaru 17.8.4. Funkcja push_back() 17.8.5. Przypisywanie 17.9. Podsumowanie dotychczasowej pracy nad typem vector 18. Szablony i wyjątki 18.1. Szablony 18.1.1. Typy jako parametry szablonów 18.1.2. Programowanie ogólne 18.1.3. Koncepcje 18.1.4. Kontenery a dziedziczenie 18.1.5. Wartościowe parametry szablonów 18.2. Uogólnianie wektora 18.2.1. Alokatory 18.3. Sprawdzanie zakresu i wyjątki 18.3.1. Dygresja - uwagi projektowe 18.3.2. Moduł PPP_support 18.4. Zasoby i wyjątki 18.4.1. Potencjalne problemy z zarządzaniem zasobami 18.4.2. Zajmowanie zasobów jest inicjalizacją 18.4.3. Gwarancje dotyczące zarządzania zasobami 18.4.4. Technika RAII dla wektora 18.5. Wskaźniki zarządzające zasobami 18.5.1. Zwrot przez przeniesienie 18.5.2. Obiekt unique_ptr 18.5.3. Obiekt shared_ptr 19. Kontenery i iteratory 19.1. Przechowywanie i przetwarzanie danych 19.1.1. Praca na danych 19.1.2. Uogólnianie kodu 19.1.3. Ideały twórcy biblioteki STL 19.2. Sekwencje i iteratory 19.2.1. Powrót do przykładu Jacka i Agatki 19.3. Listy powiązane 19.3.1. Operacje list 19.3.2. Iteracja 19.4. Jeszcze raz uogólnianie wektora 19.4.1. Przeglądanie kontenera 19.4.2. Funkcje insert() i erase() 19.4.3. Dostosowanie wektora do biblioteki STL 19.5. Przykład: prosty edytor tekstu 19.5.1. Wiersze 19.5.2. Iteracja 19.6. Typy vector, list oraz string 20. Słowniki i zbiory 20.1. Kontenery asocjacyjne 20.2. Słowniki 20.2.1. Wiązanie strukturalne 20.2.2. Opis ogólny słownika 20.2.3. Jeszcze jeden przykład zastosowania słownika 20.3. Kontener unordered_map 20.4. Czas 20.4.1. Daty 20.5. Zbiory 20.6. Przegląd kontenerów 20.6.1. "Prawie kontenery" 20.6.2. Kontener array 20.6.3. Dostosowywanie wbudowanych tablic do STL 20.6.4. Dostosowywanie strumieni wejścia/wyjścia do biblioteki STL 20.6.5. Utrzymywanie porządku przy użyciu kontenera set 20.7. Zakresy i iteratory 20.7.1. Kategorie iteratorów 20.7.2. Zakresy wyjściowe 21. Algorytmy 21.1. Algorytmy biblioteki standardowej 21.1.1. Najprostszy algorytm: find() 21.1.2. Kilka przykładów z programowania ogólnego 21.1.3. Ogólny algorytm wyszukiwania: find_if() 21.2. Obiekty funkcyjne 21.2.1. Abstrakcyjne spojrzenie na obiekty funkcyjne 21.2.2. Predykaty składowych klas 21.2.3. Wyrażenia lambda 21.3. Algorytmy numeryczne 21.3.1. Akumulacja 21.3.2. Uogólnianie funkcji accumulate() 21.3.3. Iloczyn skalarny 21.3.4. Uogólnianie funkcji inner_product() 21.4. Kopiowanie 21.4.1. Najprostsza wersja funkcji copy() 21.4.2. Uogólnianie funkcji copy_if() 21.5. Sortowanie i wyszukiwanie Ćwiczenia Powtórzenie Terminologia Praca domowa Podsumowanie Skorowidz O autorze: Dr Bjarne Stroustrup zaprojektował i zaimplementował język C++. Jest autorem książek, licznych publikacji popularnonaukowych i akademickich. Piastuje stanowisko profesora informatyki na Columbia University w Nowym Jorku. Jest członkiem amerykańskiej National Academy of Engineering, stowarzyszeń IEEE, ACM i CHM, a także laureatem prestiżowych wyróżnień.

Specyfikacja

Podstawowe informacje

Autor
  • Bjarne Stroustrup
Wybrani autorzy
  • Bjarne Stroustrup
Wydawnictwo
  • Helion
Okładka
  • Twarda
Rok wydania
  • 2026
Ilość stron
  • 680
Tematyka
  • Programowanie
ISBN
  • 9788328929951