ksiegarnia-fachowa.pl
wprowadź własne kryteria wyszukiwania książek: (jak szukać?)
Twój koszyk:   0 zł   zamówienie wysyłkowe >>>
Strona główna > opis książki

ALGORYTMY STRUKTURY DANYCH I TECHNIKI PROGRAMOWANIA DLA PROGRAMISTÓW JAVA


WRÓBLEWSKI P.

wydawnictwo: HELION , rok wydania 2019, wydanie I

cena netto: 70.35 Twoja cena  66,83 zł + 5% vat - dodaj do koszyka

Algorytmy

struktury danych i techniki programowania dla programistów Java

Opanuj Javę jak prawdziwy profesjonalista!
Podstawy algorytmiki dla praktyków
Modelowanie struktur danych w Javie
Skuteczne techniki programowania na przykładach

Java jest obecnie jednym z najpopularniejszych języków programowania, co zawdzięcza przede wszystkim swojej prostocie, nowoczesności, dużym możliwościom oraz niezależności od architektury platform sprzętowych i systemowych, na których mają pracować napisane w tym języku programy. Java znalazła zastosowanie w wielu różnych branżach - zdecydowanie dominuje w rozwiązaniach działających w sieci, stanowiących obecnie dużą część oprogramowania tworzonego komercyjnie. Mimo to dotychczas trudno było znaleźć rzetelne źródło wiedzy o algorytmach, które byłoby przeznaczone dla użytkowników Javy, wyjaśniało zasady modelowania danych w tym języku i pozwalało szybko testować gotowe programy.

Na szczęście to już przeszłość! Książka Algorytmy, struktury danych i techniki programowania dla programistów Java jest pierwszą poważną pozycją przybliżającą tematykę algorytmów osobom posługującym się tym językiem. W prosty i praktyczny sposób przedstawia najważniejsze zagadnienia algorytmiki, pozwala poznać struktury danych i ich zastosowania, prezentuje popularne algorytmy oraz problemy, które można za ich pomocą rozwiązać, omawia także techniki programowania wykorzystywane przez miliony specjalistów w ich codziennej pracy. Jeśli chcesz być profesjonalnym programistą Javy, nie mogłeś trafić lepiej!

Podstawy algorytmiki i kodowania liczb
Algorytmy rekurencyjne i iteracyjne
Analiza złożoności i optymalizacja algorytmów
Modelowanie i wykorzystanie struktur danych
Wykorzystanie biblioteki java.util
Przeszukiwanie i sortowanie danych
Przegląd technik programowania
Algorytmy grafowe i numeryczne
Kodowanie i kompresja danych
Wprowadzenie do języka Java i narzędzi JDK
Rozwiązuj problemy programistyczne w Javie!.

Piotr Wróblewski — autor wielu książek z dziedziny informatyki. Z wydawnictwem Helion współpracuje od 1992 roku, czego wynikiem są liczne podręczniki dotyczące programowania i obsługi komputerów. Najpopularniejsze do tej pory ABC komputera i Algorytmy, struktury danych i techniki programowania doczekały się kilku wydań i cieszą się u Czytelników stałym zainteresowaniem. Ten ostatni tytuł ukazał się także za granicą.

Piotr Wróblewski jest absolwentem Politechniki Śląskiej oraz francuskiej uczelni informatycznej ENSSAT (Lannion w Bretanii). Studia we Francji do tej pory wspomina jako największą przygodę swojego życia. Po powrocie do Polski zajmował się pisaniem oprogramowania na zamówienie i prowadzeniem szkoleń komputerowych. Przez kolejne dziewięć lat pracował w spółkach zagranicznych z branży IT/telekomunikacja, głównie w charakterze kierownika projektów (Impaq, Polkomtel).

Już w trakcie pracy zawodowej ukończył dodatkowe studia z zarządzania i marketingu Master HEC w Szkole Biznesu Politechniki Warszawskiej. Od początku 2006 roku mieszka we Wrocławiu, gdzie pracuje w firmie Nokia na stanowisku kierownika produktu (obecnie w dziale oferującym rozwiązania telekomunikacyjne dla sektora bezpieczeństwa publicznego (tzw. Public Safety).

Przedmowa
Dlaczego Java?
Co odróżnia tę książkę od innych podręczników?
Jak należy czytać tę książkę?
Co zostało opisane w tej książce?
Rozdział 1. Zanim wystartujemy
Rozdział 2. Systemy obliczeniowe i podstawy kodowania
Rozdział 3. Rekurencja
Rozdział 4. Analiza złożoności algorytmów
Rozdział 5. Podstawy modelowania danych
Rozdział 6. Modelowanie abstrakcyjnych typów danych
Rozdział 7. Struktury danych o dostępie ograniczonym
Rozdział 8. Drzewa i zbiory
Rozdział 9. java.util, czyli struktury danych dla leniuchów
Rozdział 10. Algorytmy przeszukiwania
Rozdział 11. Algorytmy sortowania
Rozdział 12. Derekursywacja i optymalizacja algorytmów
Rozdział 13. Przeszukiwanie tekstów
Rozdział 14. Zaawansowane techniki programowania
Rozdział 15. Algorytmy grafowe
Rozdział 16. Algorytmy numeryczne
Rozdział 17. Kodowanie i kompresja danych
Rozdział 18. Czy komputery mogą myśleć?
Rozdział 19. Zadania różne
Dodatek A
Programy przykładowe
Konwencje typograficzne i oznaczenia

Rozdział 1. Zanim wystartujemy
Czym powinien się charakteryzować algorytm?
Jak to wcześniej bywało, czyli wyjątki z historii maszyn algorytmicznych
1804
1830 i później
1890
lata 30. XX w.
lata 40. XX w.
okres powojenny
1969
teraz
Jak to się niedawno odbyło, czyli o tym, kto wymyślił metodologię programowania
Proces koncepcji programów
Poziomy abstrakcji opisu i wybór języka
Modelowanie działania algorytmów (maszyna Turinga)
Poprawność algorytmów
Zadania
Zadanie 1.
Zadanie 2.
Zadanie 3.
Rozwiązania i wskazówki do zadań
Zadanie 1.
Zadanie 2.
Zadanie 3.

Rozdział 2. Systemy obliczeniowe i podstawy kodowania
System dziesiętny i kilka definicji
System dwójkowy
Operacje arytmetyczne na liczbach dwójkowych
Operacje logiczne na liczbach dwójkowych
Kod BCD
System ósemkowy
System szesnastkowy
Kodowanie liczb ze znakiem
Kod znak-moduł (ZM)
Kod U2 (system uzupełnienia dwójkowego)
Przykład wyliczania liczby dziesiętnej w U2:
Przykład wyliczania liczby przeciwnej w U2:
Zmienne w pamięci komputera
Kodowanie znaków
Kodowanie obrazów
Mapy bitowe na przykładzie formatu BMP

Rozdział 3. Rekurencja
Definicja rekurencji
Ilustracja pojęcia rekurencji
Jak wykonują się programy rekurencyjne?
Niebezpieczeństwa rekurencji
Ciąg Fibonacciego
Stack overflow!
Ćwiczenie 3.1.
Ćwiczenie 3.2.
Pułapek ciąg dalszy
Stąd do wieczności
Definicja poprawna, ale
Typy programów rekurencyjnych
Myślenie rekurencyjne
Przykład 1. Spirala
Przykład 2. Kwadraty parzyste
Uwagi praktyczne na temat technik rekurencyjnych
Zadania
Zadanie 1.
Zadanie 2.
Zadanie 3.
Pytanie 1.
Pytanie 2.
Zadanie 4.
Zadanie 5.
Zadanie 6.
Rozwiązania i wskazówki do zadań
Zadanie 1.
Zadanie 2.
Zadanie 3.
Zadanie 4.
Zadanie 5.
Zadanie 6.

Rozdział 4. Analiza złożoności algorytmów
Definicje i przykłady
Jeszcze raz funkcja silnia
Zerowanie fragmentu tablicy
Wpadamy w pułapkę
Różne typy złożoności obliczeniowej
Nowe zadanie: uprościć obliczenia!
Analiza programów rekurencyjnych
Terminologia i definicje
Ilustracja metody na przykładzie
Rozkład logarytmiczny
Przeszukiwanie binarne tym razem bez matematyki wyższej!
Zamiana dziedziny równania rekurencyjnego
Funkcja Ackermanna, czyli coś dla smakoszy
Złożoność obliczeniowa to nie religia!
Techniki optymalizacji programów
Zadania
Zadanie 1.
Zadanie 2.
Zadanie 3.
Zadanie 4.
Rozwiązania i wskazówki do zadań
Zadanie 2.
Zadanie 4.

Rozdział 5. Podstawy modelowania danych
Typy proste i złożone
Operatory i zmienne
Obiektowe typy proste, czyli klasy osłonowe
Ciągi znaków i napisy
Tablice
Pojęcie referencji, czyli gdzie te wskaźniki z dawnych lat
Programowanie obiektowe jako narzędzie modelowania danych i algorytmów
Terminologia
Modelowanie danych na przykładzie liczb zespolonych
Pola i metody statyczne klas
Dziedziczenie własności
Struktury rekurencyjne w Javie

Rozdział 6. Modelowanie abstrakcyjnych typów danych
Abstrakcyjne typy danych
Listy jednokierunkowe
Realizacja struktur danych listy jednokierunkowej
Proste dołączanie elementów do listy
Dołączanie elementów do listy z sortowaniem
Usuwanie danych z listy
Metody łączenia list
Sortowanie list za pomocą list referencji
Tablicowa implementacja list
Klasyczna reprezentacja tablicowa
Metoda tablic równoległych
Listy innych typów
Lista dwukierunkowa
Lista cykliczna
Listy z iteratorem
Podsumowanie

Rozdział 7. Struktury danych o dostępie ograniczonym
Stos
Zasada działania stosu
Realizacja programowa stosu
Kolejki FIFO
Sterty i kolejki priorytetowe
Zadania
Zadanie 1.
Rozwiązania i wskazówki do zadań
Zadanie 1.

Rozdział 8. Drzewa i zbiory
Drzewa i ich reprezentacje
Binarne drzewa poszukiwań (BST)
Drzewa binarne i wyrażenia arytmetyczne
Uniwersalna struktura słownikowa
Drzewa egzotyczne
Zbiory
Zadania
Zadanie 1.
Zadanie 2.
Zadanie 3.
Zadanie 4.
Rozwiązania zadań
Zadanie 1.

Rozdział 9. java.util, czyli struktury danych dla leniuchów
Java i interfejsy
Klasa Arrays, operacje na tablicach
Klasa Vector, czyli tablice dynamiczne
Listy
Iteratory, czyli wygodne indeksowanie kolekcji
Stos
Sortowanie kolekcji
Klasa HashSet, czyli szybko do celu

Rozdział 10. Algorytmy przeszukiwania
Przeszukiwanie liniowe
Przeszukiwanie binarne
Transformacja kluczowa (hashing)
W poszukiwaniu funkcji H
Najbardziej znane funkcje H
Suma modulo 2
Suma modulo Rmax
Mnożenie
Obsługa konfliktów dostępu
Powrót do źródeł
Jeszcze raz tablice!
Próbkowanie liniowe
Podwójne kluczowanie
Zastosowania transformacji kluczowej
Klasyczne funkcje C/C++ oraz Java
Funkcje hashujące a klasy Javy
Podsumowanie metod transformacji kluczowej

Rozdział 11. Algorytmy sortowania
Sortowanie przez wstawianie, algorytm klasy O(N2)
Sortowanie bąbelkowe, algorytm klasy O(N2)
Sortowanie szybkie (Quicksort) algorytm klasy O(N log N)
Heapsort sortowanie przez kopcowanie
Scalanie zbiorów posortowanych
Sortowanie przez scalanie, algorytm klasy O(N log N)
Sortowanie zewnętrzne
Uwagi praktyczne

Rozdział 12. Derekursywacja i optymalizacja algorytmów
Jak pracuje kompilator?
Odrobina formalizmu nie zaszkodzi!
Przykład
Kilka przykładów derekursywacji algorytmów
Derekursywacja z wykorzystaniem stosu
Eliminacja zmiennych lokalnych
Metoda funkcji przeciwnych
Klasyczne schematy derekursywacji
Schemat typu while
Schemat typu if-else
Schemat z podwójnym wywołaniem rekurencyjnym
Podsumowanie

Rozdział 13. Przeszukiwanie tekstów
Algorytm typu brute force
Nowe algorytmy poszukiwań
Algorytm KMP
Algorytm Boyera-Moorea
Algorytm Rabina-Karpa

Rozdział 14. Zaawansowane techniki programowania
Programowanie typu dziel i zwyciężaj
Odszukiwanie minimum i maksimum w tablicy liczb
Ćwiczenie 1.
Mnożenie macierzy o rozmiarze N×N
Mnożenie liczb całkowitych
Inne znane algorytmy dziel i zwyciężaj
Algorytmy żarłoczne, czyli przekąsić coś nadszedł już czas
Problem plecakowy, czyli niełatwe jest życie turysty piechura
Wydawanie reszty, czyli A nie ma pan drobnych? w praktyce
Programowanie dynamiczne
Ciąg Fibonacciego
Równania z wieloma zmiennymi
Najdłuższa wspólna podsekwencja
Najdłuższy wspólny podłańcuch
Heurystyczne techniki programowania
Uwagi bibliograficzne

Rozdział 15. Algorytmy grafowe
Definicje i pojęcia podstawowe
Etykiety i wartości
Cykle w grafach
Sposoby reprezentacji grafów
Reprezentacja tablicowa
Słowniki węzłów
Listy kontra zbiory
Podstawowe operacje na grafach
Suma grafów
Kompozycja grafów
Graf do potęgi
Algorytm Roya-Warshalla
Algorytm Floyda-Warshalla
Algorytm Dijkstry
Algorytm Bellmana-Forda
Drzewo rozpinające minimalne
Algorytm Kruskala
Algorytm Prima
Przeszukiwanie grafów
Strategia w głąb (przeszukiwanie zstępujące)
Strategia wszerz
Inne strategie przeszukiwania
Problem właściwego doboru
Podsumowanie
Zadania
Zadanie 1.
Zadanie 2.
Zadanie 3.
Zadanie 4.

Rozdział 16. Algorytmy numeryczne
Poszukiwanie miejsc zerowych funkcji
Iteracyjne obliczanie wartości funkcji
Interpolacja funkcji metodą Lagrangea
Różniczkowanie funkcji
Całkowanie funkcji metodą Simpsona
Biblioteki naukowe dla Javy
Uwagi końcowe

Rozdział 17. Kodowanie i kompresja danych
Kodowanie danych i arytmetyka dużych liczb
Metody prymitywne
Kodowanie symetryczne
Kodowanie asymetryczne
Obliczenia na bardzo dużych liczbach całkowitych
Klasa BigInteger
Łamanie kodów
Jakość klucza szyfrującego
Metody łamania szyfrów
Techniki kompresji danych
Kompresja za pomocą modelowania matematycznego
Kompresja metodą RLE
Kompresja danych metodą Huffmana
FAZA REDUKCJI (kierunek: w dół)
FAZA KONSTRUKCJI KODU (kierunek: w górę)
Kodowanie LZW
Przykład kodowania LZW
Przykład dekodowania LZW
Praktyczne użycie LZW w formacie GIF

Rozdział 18. Czy komputery mogą myśleć?
Przegląd obszarów zainteresowań sztucznej inteligencji (SI)
Systemy eksperckie
Sieci neuronowe
Reprezentacja problemów
Przykład 1.
Przykład 2.
Ćwiczenie 1.
Gry dwuosobowe i drzewa gier
Algorytm min-max

Rozdział 19. Zadania różne
Teksty zadań
Zadanie 1.
Zadanie 2.
Zadanie 3.
Zadanie 4.
Zadanie 5.
Zadanie 6.
Zadanie 7.
Zadanie 8.
Zadanie 9.
Zadanie 10.
Zadanie 11.
Zadanie 12.
Rozwiązania
Zadanie 1.
Zadanie 3.
Zadanie 4.
Zadanie 10.
Zadanie 11.

Dodatek A Java szybki start
Instalacja środowiska Java
Środowiska IDE do Javy
Konfiguracja środowiska Java
Systemy pochodne UNIX (np. Linux)
System Windows
Kompilujemy program w Javie
Pakiety w Javie
Poznaj Javę w 5 minut!
Elementy języka Java na przykładach
Sterowanie przebiegiem programu
Instrukcja if else
Instrukcja wyboru (switch)
Iteracje
Pętla for
Pętle while
Konwersje typów i wprowadzanie danych
Operacje na plikach w Javie
Funkcje matematyczne w Javie
Literatura
Spis rysunków
Spis tabel

456 stron, Format: 16.0x23.5cm, oprawa miękka

Po otrzymaniu zamówienia poinformujemy,
czy wybrany tytuł polskojęzyczny lub anglojęzyczny jest aktualnie na półce księgarni.

 
Wszelkie prawa zastrzeżone PROPRESS sp. z o.o. 2012-2024