Algorytmy, struktury danych i techniki program.

39,36

Opis

Opanuj Javę jak prawdziwy profesjonalista!Podstawy algorytmiki dla praktykówModelowanie struktur danych w JavieSkuteczne techniki programowania na przykładachJava 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 liczbAlgorytmy rekurencyjne i iteracyjneAnaliza złożoności i optymalizacja algorytmówModelowanie i wykorzystanie struktur danychWykorzystanie biblioteki java.utilPrzeszukiwanie i sortowanie danychPrzegląd technik programowaniaAlgorytmy grafowe i numeryczneKodowanie i kompresja danychWprowadzenie do języka Java i narzędzi JDKRozwiązuj problemy programistyczne w Javie!Spis treści:PrzedmowaDlaczego 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 wystartujemyRozdział 2. Systemy obliczeniowe i podstawy kodowaniaRozdział 3. RekurencjaRozdział 4. Analiza złożoności algorytmówRozdział 5. Podstawy modelowania danychRozdział 6. Modelowanie abstrakcyjnych typów danychRozdział 7. Struktury danych o dostępie ograniczonymRozdział 8. Drzewa i zbioryRozdział 9. java.util, czyli struktury danych dla leniuchówRozdział 10. Algorytmy przeszukiwaniaRozdział 11. Algorytmy sortowaniaRozdział 12. Derekursywacja i optymalizacja algorytmówRozdział 13. Przeszukiwanie tekstówRozdział 14. Zaawansowane techniki programowaniaRozdział 15. Algorytmy grafoweRozdział 16. Algorytmy numeryczneRozdział 17. Kodowanie i kompresja danychRozdział 18. Czy komputery mogą myśleć?Rozdział 19. Zadania różneDodatek AProgramy przykładoweKonwencje typograficzne i oznaczeniaRozdział 1. Zanim wystartujemyCzym powinien się charakteryzować algorytm?Jak to wcześniej bywało, czyli wyjątki z historii maszyn algorytmicznych18041830 i później1890lata 30. XX w.lata 40. XX w.okres powojenny1969terazJak to się niedawno odbyło, czyli o tym, kto wymyślił metodologię programowaniaProces koncepcji programówPoziomy abstrakcji opisu i wybór językaModelowanie działania algorytmów (maszyna Turinga)Poprawność algorytmówZadaniaZadanie 1.Zadanie 2.Zadanie 3.Rozwiązania i wskazówki do zadańZadanie 1.Zadanie 2.Zadanie 3.Rozdział 2. Systemy obliczeniowe i podstawy kodowaniaSystem dziesiętny i kilka definicjiSystem dwójkowyOperacje arytmetyczne na liczbach dwójkowychOperacje logiczne na liczbach dwójkowychKod BCDSystem ósemkowySystem szesnastkowyKodowanie liczb ze znakiemKod 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 komputeraKodowanie znakówKodowanie obrazówMapy bitowe na przykładzie formatu BMPRozdział 3. RekurencjaDefinicja rekurencjiIlustracja pojęcia rekurencjiJak wykonują się programy rekurencyjne?Niebezpieczeństwa rekurencjiCiąg FibonacciegoStack overflow!Ćwiczenie 3.1.Ćwiczenie 3.2.Pułapek ciąg dalszyStąd do wiecznościDefinicja poprawna, aleTypy programów rekurencyjnychMyślenie rekurencyjnePrzykład 1. SpiralaPrzykład 2. Kwadraty parzysteUwagi praktyczne na temat technik rekurencyjnychZadaniaZadanie 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ówDefinicje i przykładyJeszcze raz funkcja silniaZerowanie fragmentu tablicyWpadamy w pułapkęRóżne typy złożoności obliczeniowejNowe zadanie: uprościć obliczenia!Analiza programów rekurencyjnychTerminologia i definicjeIlustracja metody na przykładzieRozkład logarytmicznyPrzeszukiwanie binarne tym razem bez matematyki wyższej!Zamiana dziedziny równania rekurencyjnegoFunkcja Ackermanna, czyli coś dla smakoszyZłożoność obliczeniowa to nie religia!Techniki optymalizacji programówZadaniaZadanie 1.Zadanie 2.Zadanie 3.Zadanie 4.Rozwiązania i wskazówki do zadańZadanie 2.Zadanie 4.Rozdział 5. Podstawy modelowania danychTypy proste i złożoneOperatory i zmienneObiektowe typy proste, czyli klasy osłonoweCiągi znaków i napisyTablicePojęcie referencji, czyli gdzie te wskaźniki z dawnych latProgramowanie obiektowe jako narzędzie modelowania danych i algorytmówTerminologiaModelowanie danych na przykładzie liczb zespolonychPola i metody statyczne klasDziedziczenie własnościStruktury rekurencyjne w JavieRozdział 6. Modelowanie abstrakcyjnych typów danychAbstrakcyjne typy danychListy jednokierunkoweRealizacja struktur danych listy jednokierunkowejProste dołączanie elementów do listyDołączanie elementów do listy z sortowaniemUsuwanie danych z listyMetody łączenia listSortowanie list za pomocą list referencjiTablicowa implementacja listKlasyczna reprezentacja tablicowaMetoda tablic równoległychListy innych typówLista dwukierunkowaLista cyklicznaListy z iteratoremPodsumowanieRozdział 7. Struktury danych o dostępie ograniczonymStosZasada działania stosuRealizacja programowa stosuKolejki FIFOSterty i kolejki priorytetoweZadaniaZadanie 1.Rozwiązania i wskazówki do zadańZadanie 1.Rozdział 8. Drzewa i zbioryDrzewa i ich reprezentacjeBinarne drzewa poszukiwań (BST)Drzewa binarne i wyrażenia arytmetyczneUniwersalna struktura słownikowaDrzewa egzotyczneZbioryZadaniaZadanie 1.Zadanie 2.Zadanie 3.Zadanie 4.Rozwiązania zadańZadanie 1.Rozdział 9. java.util, czyli struktury danych dla leniuchówJava i interfejsyKlasa Arrays, operacje na tablicachKlasa Vector, czyli tablice dynamiczneListyIteratory, czyli wygodne indeksowanie kolekcjiStosSortowanie kolekcjiKlasa HashSet, czyli szybko do celuRozdział 10. Algorytmy przeszukiwaniaPrzeszukiwanie liniowePrzeszukiwanie binarneTransformacja kluczowa (hashing)W poszukiwaniu funkcji HNajbardziej znane funkcje HSuma modulo 2Suma modulo RmaxMnożenieObsługa konfliktów dostępuPowrót do źródełJeszcze raz tablice!Próbkowanie liniowePodwójne kluczowanieZastosowania transformacji kluczowejKlasyczne funkcje C/C++ oraz JavaFunkcje hashujące a klasy JavyPodsumowanie metod transformacji kluczowejRozdział 11. Algorytmy sortowaniaSortowanie 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 kopcowanieScalanie zbiorów posortowanychSortowanie przez scalanie, algorytm klasy O(N log N)Sortowanie zewnętrzneUwagi praktyczneRozdział 12. Derekursywacja i optymalizacja algorytmówJak pracuje kompilator?Odrobina formalizmu nie zaszkodzi!PrzykładKilka przykładów derekursywacji algorytmówDerekursywacja z wykorzystaniem stosuEliminacja zmiennych lokalnychMetoda funkcji przeciwnychKlasyczne schematy derekursywacjiSchemat typu whileSchemat typu if-elseSchemat z podwójnym wywołaniem rekurencyjnymPodsumowanieRozdział 13. Przeszukiwanie tekstówAlgorytm typu brute forceNowe algorytmy poszukiwańAlgorytm KMPAlgorytm Boyera-MooreaAlgorytm Rabina-KarpaRozdział 14. Zaawansowane techniki programowaniaProgramowanie typu dziel i zwyciężajOdszukiwanie minimum i maksimum w tablicy liczbĆwiczenie 1.Mnożenie macierzy o rozmiarze N×NMnożenie liczb całkowitychInne znane algorytmy dziel i zwyciężajAlgorytmy żarłoczne, czyli przekąsić coś nadszedł już czasProblem plecakowy, czyli niełatwe jest życie turysty piechuraWydawanie reszty, czyli A nie ma pan drobnych? w praktyceProgramowanie dynamiczneCiąg FibonacciegoRównania z wieloma zmiennymiNajdłuższa wspólna podsekwencjaNajdłuższy wspólny podłańcuchHeurystyczne techniki programowaniaUwagi bibliograficzneRozdział 15. Algorytmy grafoweDefinicje i pojęcia podstawoweEtykiety i wartościCykle w grafachSposoby reprezentacji grafówReprezentacja tablicowaSłowniki węzłówListy kontra zbioryPodstawowe operacje na grafachSuma grafówKompozycja grafówGraf do potęgiAlgorytm Roya-WarshallaAlgorytm Floyda-WarshallaAlgorytm DijkstryAlgorytm Bellmana-FordaDrzewo rozpinające minimalneAlgorytm KruskalaAlgorytm PrimaPrzeszukiwanie grafówStrategia w głąb (przeszukiwanie zstępujące)Strategia wszerzInne strategie przeszukiwaniaProblem właściwego doboruPodsumowanieZadaniaZadanie 1.Zadanie 2.Zadanie 3.Zadanie 4.Rozdział 16. Algorytmy numerycznePoszukiwanie miejsc zerowych funkcjiIteracyjne obliczanie wartości funkcjiInterpolacja funkcji metodą LagrangeaRóżniczkowanie funkcjiCałkowanie funkcji metodą SimpsonaBiblioteki naukowe dla JavyUwagi końcoweRozdział 17. Kodowanie i kompresja danychKodowanie danych i arytmetyka dużych liczbMetody prymitywneKodowanie symetryczneKodowanie asymetryczneObliczenia na bardzo dużych liczbach całkowitychKlasa BigIntegerŁamanie kodówJakość klucza szyfrującegoMetody łamania szyfrówTechniki kompresji danychKompresja za pomocą modelowania matematycznegoKompresja metodą RLEKompresja danych metodą HuffmanaFAZA REDUKCJI (kierunek: w dół)FAZA KONSTRUKCJI KODU (kierunek: w górę)Kodowanie LZWPrzykład kodowania LZWPrzykład dekodowania LZWPraktyczne użycie LZW w formacie GIFRozdział 18. Czy komputery mogą myśleć?Przegląd obszarów zainteresowań sztucznej inteligencji (SI)Systemy eksperckieSieci neuronoweReprezentacja problemówPrzykład 1.Przykład 2.Ćwiczenie 1.Gry dwuosobowe i drzewa gierAlgorytm min-maxRozdział 19. Zadania różneTeksty 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ązaniaZadanie 1.Zadanie 3.Zadanie 4.Zadanie 10.Zadanie 11.Dodatek A Java szybki startInstalacja środowiska JavaŚrodowiska IDE do JavyKonfiguracja środowiska JavaSystemy pochodne UNIX (np. Linux)System WindowsKompilujemy program w JaviePakiety w JaviePoznaj Javę w 5 minut!Elementy języka Java na przykładachSterowanie przebiegiem programuInstrukcja if elseInstrukcja wyboru (switch)IteracjePętla forPętle whileKonwersje typów i wprowadzanie danychOperacje na plikach w JavieFunkcje matematyczne w JavieLiteraturaSpis rysunkówSpis tabel O autorze: 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 – obecnie na stanowisku kierownika zespołu w dziale rozwoju oprogramowania stacji bazowych (warstwa radiowa).Pełny profil zawodowy: https://www.linkedin.com/in/pwroblewski/.

farmacja gdańsk, zatrudnie pracownika, anna markowska wzrost, kurs angielskiego gdynia, invimed poznań forum, xero wroclaw, rajka, wdiib sekcja studencka, przedłużenie legitymacji studenckiej, tnt barbers, darmowe kursy maturalne warszawa, chorzów medycyna pracy

yyyyy