Książka "Algorytmy w C" jest doskonałą pomocą dla programistów, którym w codziennej pracy potrzebne są sprawdzone rozwiązania. Nie ma tu teoretycznych dywagacji tak charakterystycznych dla większości książek o strukturach danych i algorytmach. Znajdziesz w niej za to przystępnie podane informacje i praktyczne techniki programowania.
Wyjątkowo elegancki styl programowania i pisania autora, Kyle’a Loudona, ułatwia poznanie najważniejszych struktur danych, takich jak listy, stosy, kolejki, zbiory, sterty, kolejki priorytetowe i grafy. Autor prezentuje użycie algorytmów sortujących, wyszukiwania, analiz numerycznych, kompresji danych, szyfrowania danych, typowych algorytmów obsługi grafów oraz geometrii analitycznej. W rozdziałach poświęconych kompresji i szyfrowaniu czytelnik znajdzie nie tylko gotowy, szybki w działaniu kod, ale też informacje przydatne dla osób, które nigdy nie miały czasu ani chęci zagłębiać się w omawiane zagadnienia.
W tekście umieszczono także kody wraz z przykładami zastosowania poszczególnych struktur danych i algorytmów. Komplet kodów źródłowych znajduje się na płycie CD-ROM. Kod ten został napisany w taki sposób, byś łatwo mógł go wykorzystać we własnych aplikacjach.
W książce omówiono:
* Wskaźniki
* Rekurencję
* Analizę algorytmów
* Struktury danych (listy, stosy, kolejki, zbiory, tablice asocjacyjne, drzewa, sterty, kolejki priorytetowe i grafy)
* Sortowanie i wyszukiwanie
* Metody numeryczne
* Kompresję danych
* Szyfrowanie danych
* Algorytmy operujące na grafach
* Algorytmy przydatne do obliczeń geometrycznych.
Badanie struktur danych, elementarnych składników wykorzystywanych w informatyce, jest podstawą, w oparciu o którą możesz zdobywać cenne umiejętności. Znajomość struktur danych jest niezbędna studentom, którzy chcą programować czy też testować oprogramowanie.
W niniejszej książce zwrócono uwagę na trzy ważne aspekty struktur danych: po pierwsze, na związek struktur danych z algorytmami, między innymi na złożoność obliczeniową algorytmów. Po drugie, struktury te prezentowane są w sposób zgodny z zasadami projektowania obiektowego i obiektowym paradygmatem programowania. Po trzecie, ważną częścią książki są implementacje struktur danych w języku C++.
Książka prezentuje:
* Podstawy projektowania obiektowego w C++
* Analizę złożoności
* Listy powiązane
* Stosy i kolejki
* Rekurencję
* Drzewa binarne
* Sterty
* Drzewa wielokrotne
* Grafy
* Sortowanie i mieszanie
* Kompresja danych
* Zarządzanie pamięcią
Książka ta dostarcza studentom informatyki nie tylko niezbędnej wiedzy na temat algorytmów i struktur danych, ale prezentuje jednocześnie sposoby ich implementacji w języku C++, obecnie jednym z wiodących języków programowania. Dostarcza ona więc nie tylko wiedzy teoretycznej, ale również pozwala rozwinąć praktyczne umiejętności przydatnych w przyszłej pracy zawodowej.
Badanie algorytmów leży w samym sercu nauk komputerowych. W ostatnich latach dokonano znaczących postępów w tej dziedzinie. Opracowano m.in. wiele efektywniejszych algorytmów (szybkie przekształcenie Fouriera), odkryto także istnienie pewnych naturalnych zadań, dla których wszystkie algorytmy są nieefektywne. Wyniki te powodują wzrost zainteresowania badaniami algorytmów, co przyczynia się do intensywnego rozwoju tej dziedziny wiedzy.
Książka jest podręcznikiem wstępnego kursu projektowania i analizy algorytmów. Autorzy położyli nacisk raczej na prezentacji najważniejszych idei i przystępności wykładu, niż na szczegółach realizacji i sztuczkach programistycznych. Autorzy przedstawiają na ogół nieformalne, intuicyjne objaśnienia zamiast długich i pracochłonnych dowodów. Książka nie wymaga żadnego szczególnego przygotowania z zakresu matematyki, czy języków programowania. Pożądana jest jednak pewna dojrzałość w stosowaniu pojęć matematycznych, ogólne obycie w językach programowania wysokiego poziomu, takich jak FORTRAN lub ALGOL, a także podstawowa znajomość algebry liniowej.
W książce omówiono m.in.:
* Podstawowe pojęcia i modele (w tym maszynę Turniga)
* Najważniejsze struktury danych, rekurencję, programowanie dynamiczne
* Algorytmy sortowania, operacje na zbiorach, drzewach i grafach
* Szybkie przekształcenie Fouriera z zastosowaniami
* Algorytmy arytmetyczne, operacje na wielomianach
* Algorytmy dopasowania wzorców
* Problemy NP-zupełne
* Dolne ograniczenia złożoności obliczeniowej
Ważnym uzupełnieniem treści książki są ćwiczenia o zróżnicowanych poziomach trudności. "Projektowanie i analiza algorytmów" to doskonały podręcznik dla studentów informatyki i kierunków pokrewnych, a także wspaniała pomoc dla osób prowadzących wykłady i ćwiczenia na tych kierunkach.
Struktura organizacyjna i architektura systemów komputerowychWydawnictwo Helion
Komputery już dawno stały się zjawiskiem powszechnym i nie są już traktowane jak magiczne skrzynki. Praktycznie wszyscy znają już możliwości ich praktycznego wykorzystania. W dobie intuicyjnych systemów operacyjnych, technologii plug-and-play i postępującego uproszczenia wszelkich operacji związanych z komputerami wiedza o architekturze i organizacji systemów komputerowych może wydawać się potrzebna jedynie wąskiej grupie specjalistów-sprzętowców. Jest jednak inaczej. Ogólna znajomość tego, co kryje się pod "maską" komputera potrzebna jest każdemu użytkownikowi komputera. Dzięki niej programista zrozumie, z czego wynikają błędy w działaniu programu, twórca systemów czasu rzeczywistego zoptymalizuje wykorzystanie procesora przez system, a osoba decydująca się na zakup nowego sprzętu we właściwy sposób zinterpretuje "obiektywne" testy przytaczane przez producentów w materiałach reklamowych.
Struktura organizacyjna i architektura systemów komputerowych to przystępne omówienie organizacji i architektury współczesnych komputerów. Książka, stworzona zgodnie z założeniami komitetu ACM-IEEE Computing Curricula 2001, nadaje się idealnie jako podręcznik dla kursu wprowadzającego w tą tematykę. Zawarte w niej zagadnienia zilustrowane są licznymi przykładami zaczerpniętymi z rzeczywistego świata, co dodatkowo ułatwia ich zrozumienie.
* Historia rozwoju komputerów.
* Sposoby przedstawiania danych, notacje i kody.
* Logika binarna i algebra Boole’a.
* Organizacja pracy systemu komputerowego, cykle maszynowe, magistrala, lista rozkazów, asembler.
* Tryby adresowania.
* Przechowywanie danych w pamięci komputera.
* Narzędzia programistyczne i systemy operacyjne.
* Alternatywne architektury komputerów.
* Analiza wydajności systemów komputerowych.
* Sieci komputerowe.
Doskonale dobrane proporcje pomiędzy objętością tekstu i poziomem szczegółowości oraz opisywanie wyłącznie istotnych aspektów zagadnienia powodują, że książka stanowi doskonałe źródło naprawdę przydatnej wiedzy.
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
Poznaj i wykorzystaj narzędzia do projektowania baz danych
* Jak konfigurować repozytorium PEAR?
* Jak przetwarzać formularze za pomocą języka PHP?
* Jak wprowadzać dane do tabeli bazy danych, a później je usuwać?
Umiejętność tworzenia interaktywnych stron www typu e-commerce i zarządzania nimi jest dzisiaj właściwie niezbędna. Przydaje się nie tylko administratorom sieci, ale także wszystkim informatykom i właścicielom firm. Relacyjne bazy danych stanowią podstawę nowoczesnej aplikacji internetowej, więc przede wszystkim należy poznać najpopularniejsze języki wykorzystywane podczas pracy na tych bazach: język skryptowy PHP oraz język zapytań SQL, a także internetowe usługi informacyjne (IIS) występujące w najnowszych serwerowych systemach operacyjnych Microsoft Windows.
Książka „PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych” w przystępny sposób i na konkretnym przykładzie przedstawia zagadnienia dotyczące projektowania, programowania i implementowania relacyjnej bazy danych. Mimo że podręcznik przeznaczony jest dla osób, które przynajmniej w niewielkim stopniu orientują się w tej tematyce, szeroka skala prezentowanych informacji (od prostych zagadnień teoretycznych do problemów zaawansowanych technicznie) sprawia, że każdy może z niego skorzystać - aby na przykład nauczyć się podstawowych instrukcji języka SQL i PHP, instalowania i konfigurowania ich w systemie Windows, korzystania z usług IIS i wreszcie zarządzania własną bazą danych.
* System zarządzania bazą danych
* Nazwy i typy danych
* Indeksy, klucze i schematy
* Architektura baz danych
* Normalizacja i projektowanie baz danych
* Środowisko języka SQL
* Podstawowe klauzule języka SQL
* Podstawowe właściwości języka PHP
* Architektura usług IIS
* Obsługa baz danych Microsoft SQL z poziomu PHP
* PEAR
Znajdziesz tu wszystko, czego potrzebujesz, aby stworzyć własną profesjonalną bazę danych!
Bazy danych to aplikacje, z których korzystają niemal wszyscy użytkownicy komputerów, czasem nawet nie zdając sobie z tego sprawy. W bazach danych przechowywane są informacje o użytkownikach witryny WWW, kontrahentach firmy czy numerach telefonów abonentów operatora telekomunikacyjnego. Bazą danych jest również rejestr systemu Windows i książka telefoniczna w telefonie komórkowym. Jednak aby zapisać dane w formacie odpowiednim dla aplikacji niezbędne są standardy. Współcześnie wykorzystywany relacyjny model przechowywania danych sprawdza się znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany jest inny standard: język SQL.
Książka "Bazy danych SQL. Teoria i praktyka" przedstawia wszystkie zagadnienia związane z przechowywaniem i przetwarzaniem danych we współczesnych aplikacjach. Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczęściej stosowanych systemach zarządzania bazami danych. Dowiesz się, jakie instrukcje języka SQL wykorzystywane są do wprowadzania danych, przetwarzania ich i wybierania z bazy. Nauczysz się optymalizować zapytania oraz stosować indeksy i procedury składowane. W książce znajdziesz również praktyczne wskazówki dotyczące konfigurowania serwerów baz danych i administrowania nimi.
* Przechowywanie prostych danych
* Relacyjny i obiektowy model danych
* Typy danych w języku SQL
* Instrukcje języka SQL
* Indeksy, wyzwalacze i procedury składowane
* Manipulowanie danymi
* Optymalizacja zapytań
* Charakterystyka najpopularniejszych systemów zarządzania bazami danych
Poznaj tajniki współczesnych mechanizmów przechowywania informacji.
Bazy danych to podstawa większości złożonych systemów informatycznych. W oparciu o dane czerpane z tabel w bazie działają portale i sklepy internetowe, aplikacje biznesowe i informacyjne, a nawet multimedialne witryny, coraz częściej spotykane w urzędach, muzeach i innych budynkach użyteczności publicznej. Na rynku dostępnych jest wiele systemów zarządzania bazami danych, oferowanych przez różnych producentów i na różnych zasadach licencjonowania. Pomimo istotnych różnic, wszystkie opierają się na podobnych założeniach, a projektowanie wydajnych baz danych odbywa się w niemal identyczny sposób, niezależnie od docelowego systemu zarządzania nimi. Opanowanie wiadomości leżących u podstaw projektowania i wykorzystywania baz danych jest więc niezbędne do stworzenia efektywnego i bezpiecznego zaplecza bazodanowego dla systemu informatycznego.
Książka "Wprowadzenie do systemów baz danych" to szczegółowe omówienie wszystkich aspektów projektowania i stosowania baz danych. Szczególny nacisk położono w niej na podstawy modelowania danych i definiowania tabel. Opisano języki i mechanizmy udostępniane przez systemy zarządzania bazami danych oraz techniki implementacji samych systemów. Książka może pełnić rolę podręcznika pomocnego przy poznawaniu zagadnień związanych z bazami danych lub źródła informacji dla projektantów i administratorów systemów bazodanowych.
* Rozwiązania oparte na bazach danych
* Użytkownicy baz danych
* Architektury systemów zarządzania bazami danych
* Modelowanie danych oparte na związkach encji
* Zastosowanie języka UML w modelowaniu danych
* Relacyjny model danych
* Język SQL-99
* Normalizacja danych
* Składowanie danych na dysku
* Indeksy i klucze
* Algorytmy przetwarzania zapytań
* Mechanizmy transakcyjne
* Obiektowe bazy danych
* Bezpieczeństwo danych
* Język XML w bazach danych
* Technologie eksploracji danych
* Hurtownie danych, systemy GIS i bazy danych dla urządzeń mobilnych
Książka stanowi źródło wiedzy dla projektantów baz danychi oprogramowania bazodanowego.
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
Olbrzymie możliwości i wszechstronność serwera Apache uczyniły go najbardziej rozpowszechnionym serwerem WWW. Kilka miesięcy temu Apache Software Foundation opublikowała nową wersję Apache 2.0. Najnowsza edycja Apache jest lepiej przystosowana do pracy na różnych platform systemowych niż wersja 1.3, dzięki czemu coraz częściej można spotkać Apache pracującego pod kontrolą Windows czy Mac OS. Stało się to możliwe dzięki wprowadzeniu modułów zwielokrotnionego przetwarzania, tzw. MPM (ang. Multiprocessing Module), dostosowanych do właściwości rozmaitych systemów operacyjnych, jak również wprowadzeniu przenośnych bibliotek fazy wykonywania (ang. Apache Portable Runtime). Porównując Apache 2.0 z wcześniejszymi wersjami zauważymy też istotne zmiany w procesie kompilacji i konsolidacji serwera.
Apache 2.0 to nie tylko zaawansowana architektura serwera, ale również liczne udoskonalenia i nowe funkcje. Książka ta stanowi obszerny i wyczerpujący przewodnik po wszelkich nowościach wprowadzonych w wersji 2.0. Znajdziesz w niej także informacje o zmianach wprowadzonych w porównaniu z poprzednimi wersjami.
Do kogo adresowana jest ta książka?
Książka jest napisana z myślą o profesjonalistach, którzy zamierzają zainstalować oprogramowanie Apache 2.0 w roli serwera WWW lub uaktualnić zainstalowaną wcześniejszą wersję. Monografia "Apache 2.0 dla zaawansowanych" jest także źródłem informacji niezbędnych przy kompilowaniu serwera oraz przy konfiguracji i dostosowywaniu jego funkcjonalności do indywidualnych wymagań. Zawiera ona liczne przykłady, z których skorzystają programiści i administratorzy.
Zagadnienia omówione w książce
* Nowy serwer WWW Apache 2.0 oraz sposoby uaktualniania z Apache 1.3
* Nowe funkcje Apache dostępne wersji w 1.3 i proponowane możliwości migracji serwera WWW do nowej wersji Apache 2.0
* Instalacja serwera Apache w oparciu o dystrybucje binarne oraz kompilowanie serwera z kodu źródłowego dla systemów operacyjnych UNIX i Windows
* Bezpieczne i wydajne tworzenie dynamicznej zawartości stron WWW za pomocą skryptów CGI i FastCGI
* Implementacje wirtualnych hostów w ramach serwera Apache w prostym i złożonym modelu, a także masowe tworzenie hostów wirtualnych
* Przystosowywanie serwerów Apache do sprawowania funkcji serwera pośredniczącego; zagadnienia związane z buforowaniem zawartości WWW, odpornością na błędy i testowaniem wydajności, a także tworzenie klastrów serwerów WWW
* Monitorowanie i zabezpieczanie serwerów Apache
* Rozszerzanie możliwości serwera Apache poprzez włączanie dodatkowych modułów do obsługi programów w językach Perl, Python, PHP, Tcl, Java, Ruby i protokole WebDAV
Badanie struktur danych, elementarnych składników wykorzystywanych w informatyce, jest podstawą, w oparciu o którą możesz zdobywać cenne umiejętności. Znajomość struktur danych jest niezbędna studentom, którzy chcą programować czy też testować oprogramowanie.
W niniejszej książce zwrócono uwagę na trzy ważne aspekty struktur danych: po pierwsze, na związek struktur danych z algorytmami, między innymi na złożoność obliczeniową algorytmów. Po drugie, struktury te prezentowane są w sposób zgodny z zasadami projektowania obiektowego i obiektowym paradygmatem programowania. Po trzecie, ważną częścią książki są implementacje struktur danych w języku C++.
Książka prezentuje:
* Podstawy projektowania obiektowego w C++
* Analizę złożoności
* Listy powiązane
* Stosy i kolejki
* Rekurencję
* Drzewa binarne
* Sterty
* Drzewa wielokrotne
* Grafy
* Sortowanie i mieszanie
* Kompresja danych
* Zarządzanie pamięcią
Książka ta dostarcza studentom informatyki nie tylko niezbędnej wiedzy na temat algorytmów i struktur danych, ale prezentuje jednocześnie sposoby ich implementacji w języku C++, obecnie jednym z wiodących języków programowania. Dostarcza ona więc nie tylko wiedzy teoretycznej, ale również pozwala rozwinąć praktyczne umiejętności przydatnych w przyszłej pracy zawodowej.
Badanie algorytmów leży w samym sercu nauk komputerowych. W ostatnich latach dokonano znaczących postępów w tej dziedzinie. Opracowano m.in. wiele efektywniejszych algorytmów (szybkie przekształcenie Fouriera), odkryto także istnienie pewnych naturalnych zadań, dla których wszystkie algorytmy są nieefektywne. Wyniki te powodują wzrost zainteresowania badaniami algorytmów, co przyczynia się do intensywnego rozwoju tej dziedziny wiedzy.
Książka jest podręcznikiem wstępnego kursu projektowania i analizy algorytmów. Autorzy położyli nacisk raczej na prezentacji najważniejszych idei i przystępności wykładu, niż na szczegółach realizacji i sztuczkach programistycznych. Autorzy przedstawiają na ogół nieformalne, intuicyjne objaśnienia zamiast długich i pracochłonnych dowodów. Książka nie wymaga żadnego szczególnego przygotowania z zakresu matematyki, czy języków programowania. Pożądana jest jednak pewna dojrzałość w stosowaniu pojęć matematycznych, ogólne obycie w językach programowania wysokiego poziomu, takich jak FORTRAN lub ALGOL, a także podstawowa znajomość algebry liniowej.
W książce omówiono m.in.:
* Podstawowe pojęcia i modele (w tym maszynę Turniga)
* Najważniejsze struktury danych, rekurencję, programowanie dynamiczne
* Algorytmy sortowania, operacje na zbiorach, drzewach i grafach
* Szybkie przekształcenie Fouriera z zastosowaniami
* Algorytmy arytmetyczne, operacje na wielomianach
* Algorytmy dopasowania wzorców
* Problemy NP-zupełne
* Dolne ograniczenia złożoności obliczeniowej
Ważnym uzupełnieniem treści książki są ćwiczenia o zróżnicowanych poziomach trudności. "Projektowanie i analiza algorytmów" to doskonały podręcznik dla studentów informatyki i kierunków pokrewnych, a także wspaniała pomoc dla osób prowadzących wykłady i ćwiczenia na tych kierunkach.
Struktura organizacyjna i architektura systemów komputerowychWydawnictwo Helion
Komputery już dawno stały się zjawiskiem powszechnym i nie są już traktowane jak magiczne skrzynki. Praktycznie wszyscy znają już możliwości ich praktycznego wykorzystania. W dobie intuicyjnych systemów operacyjnych, technologii plug-and-play i postępującego uproszczenia wszelkich operacji związanych z komputerami wiedza o architekturze i organizacji systemów komputerowych może wydawać się potrzebna jedynie wąskiej grupie specjalistów-sprzętowców. Jest jednak inaczej. Ogólna znajomość tego, co kryje się pod "maską" komputera potrzebna jest każdemu użytkownikowi komputera. Dzięki niej programista zrozumie, z czego wynikają błędy w działaniu programu, twórca systemów czasu rzeczywistego zoptymalizuje wykorzystanie procesora przez system, a osoba decydująca się na zakup nowego sprzętu we właściwy sposób zinterpretuje "obiektywne" testy przytaczane przez producentów w materiałach reklamowych.
Struktura organizacyjna i architektura systemów komputerowych to przystępne omówienie organizacji i architektury współczesnych komputerów. Książka, stworzona zgodnie z założeniami komitetu ACM-IEEE Computing Curricula 2001, nadaje się idealnie jako podręcznik dla kursu wprowadzającego w tą tematykę. Zawarte w niej zagadnienia zilustrowane są licznymi przykładami zaczerpniętymi z rzeczywistego świata, co dodatkowo ułatwia ich zrozumienie.
* Historia rozwoju komputerów.
* Sposoby przedstawiania danych, notacje i kody.
* Logika binarna i algebra Boole’a.
* Organizacja pracy systemu komputerowego, cykle maszynowe, magistrala, lista rozkazów, asembler.
* Tryby adresowania.
* Przechowywanie danych w pamięci komputera.
* Narzędzia programistyczne i systemy operacyjne.
* Alternatywne architektury komputerów.
* Analiza wydajności systemów komputerowych.
* Sieci komputerowe.
Doskonale dobrane proporcje pomiędzy objętością tekstu i poziomem szczegółowości oraz opisywanie wyłącznie istotnych aspektów zagadnienia powodują, że książka stanowi doskonałe źródło naprawdę przydatnej wiedzy.
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
Poznaj i wykorzystaj narzędzia do projektowania baz danych
* Jak konfigurować repozytorium PEAR?
* Jak przetwarzać formularze za pomocą języka PHP?
* Jak wprowadzać dane do tabeli bazy danych, a później je usuwać?
Umiejętność tworzenia interaktywnych stron www typu e-commerce i zarządzania nimi jest dzisiaj właściwie niezbędna. Przydaje się nie tylko administratorom sieci, ale także wszystkim informatykom i właścicielom firm. Relacyjne bazy danych stanowią podstawę nowoczesnej aplikacji internetowej, więc przede wszystkim należy poznać najpopularniejsze języki wykorzystywane podczas pracy na tych bazach: język skryptowy PHP oraz język zapytań SQL, a także internetowe usługi informacyjne (IIS) występujące w najnowszych serwerowych systemach operacyjnych Microsoft Windows.
Książka „PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych” w przystępny sposób i na konkretnym przykładzie przedstawia zagadnienia dotyczące projektowania, programowania i implementowania relacyjnej bazy danych. Mimo że podręcznik przeznaczony jest dla osób, które przynajmniej w niewielkim stopniu orientują się w tej tematyce, szeroka skala prezentowanych informacji (od prostych zagadnień teoretycznych do problemów zaawansowanych technicznie) sprawia, że każdy może z niego skorzystać - aby na przykład nauczyć się podstawowych instrukcji języka SQL i PHP, instalowania i konfigurowania ich w systemie Windows, korzystania z usług IIS i wreszcie zarządzania własną bazą danych.
* System zarządzania bazą danych
* Nazwy i typy danych
* Indeksy, klucze i schematy
* Architektura baz danych
* Normalizacja i projektowanie baz danych
* Środowisko języka SQL
* Podstawowe klauzule języka SQL
* Podstawowe właściwości języka PHP
* Architektura usług IIS
* Obsługa baz danych Microsoft SQL z poziomu PHP
* PEAR
Znajdziesz tu wszystko, czego potrzebujesz, aby stworzyć własną profesjonalną bazę danych!
Bazy danych to aplikacje, z których korzystają niemal wszyscy użytkownicy komputerów, czasem nawet nie zdając sobie z tego sprawy. W bazach danych przechowywane są informacje o użytkownikach witryny WWW, kontrahentach firmy czy numerach telefonów abonentów operatora telekomunikacyjnego. Bazą danych jest również rejestr systemu Windows i książka telefoniczna w telefonie komórkowym. Jednak aby zapisać dane w formacie odpowiednim dla aplikacji niezbędne są standardy. Współcześnie wykorzystywany relacyjny model przechowywania danych sprawdza się znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany jest inny standard: język SQL.
Książka "Bazy danych SQL. Teoria i praktyka" przedstawia wszystkie zagadnienia związane z przechowywaniem i przetwarzaniem danych we współczesnych aplikacjach. Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczęściej stosowanych systemach zarządzania bazami danych. Dowiesz się, jakie instrukcje języka SQL wykorzystywane są do wprowadzania danych, przetwarzania ich i wybierania z bazy. Nauczysz się optymalizować zapytania oraz stosować indeksy i procedury składowane. W książce znajdziesz również praktyczne wskazówki dotyczące konfigurowania serwerów baz danych i administrowania nimi.
* Przechowywanie prostych danych
* Relacyjny i obiektowy model danych
* Typy danych w języku SQL
* Instrukcje języka SQL
* Indeksy, wyzwalacze i procedury składowane
* Manipulowanie danymi
* Optymalizacja zapytań
* Charakterystyka najpopularniejszych systemów zarządzania bazami danych
Poznaj tajniki współczesnych mechanizmów przechowywania informacji.
Bazy danych to podstawa większości złożonych systemów informatycznych. W oparciu o dane czerpane z tabel w bazie działają portale i sklepy internetowe, aplikacje biznesowe i informacyjne, a nawet multimedialne witryny, coraz częściej spotykane w urzędach, muzeach i innych budynkach użyteczności publicznej. Na rynku dostępnych jest wiele systemów zarządzania bazami danych, oferowanych przez różnych producentów i na różnych zasadach licencjonowania. Pomimo istotnych różnic, wszystkie opierają się na podobnych założeniach, a projektowanie wydajnych baz danych odbywa się w niemal identyczny sposób, niezależnie od docelowego systemu zarządzania nimi. Opanowanie wiadomości leżących u podstaw projektowania i wykorzystywania baz danych jest więc niezbędne do stworzenia efektywnego i bezpiecznego zaplecza bazodanowego dla systemu informatycznego.
Książka "Wprowadzenie do systemów baz danych" to szczegółowe omówienie wszystkich aspektów projektowania i stosowania baz danych. Szczególny nacisk położono w niej na podstawy modelowania danych i definiowania tabel. Opisano języki i mechanizmy udostępniane przez systemy zarządzania bazami danych oraz techniki implementacji samych systemów. Książka może pełnić rolę podręcznika pomocnego przy poznawaniu zagadnień związanych z bazami danych lub źródła informacji dla projektantów i administratorów systemów bazodanowych.
* Rozwiązania oparte na bazach danych
* Użytkownicy baz danych
* Architektury systemów zarządzania bazami danych
* Modelowanie danych oparte na związkach encji
* Zastosowanie języka UML w modelowaniu danych
* Relacyjny model danych
* Język SQL-99
* Normalizacja danych
* Składowanie danych na dysku
* Indeksy i klucze
* Algorytmy przetwarzania zapytań
* Mechanizmy transakcyjne
* Obiektowe bazy danych
* Bezpieczeństwo danych
* Język XML w bazach danych
* Technologie eksploracji danych
* Hurtownie danych, systemy GIS i bazy danych dla urządzeń mobilnych
Książka stanowi źródło wiedzy dla projektantów baz danychi oprogramowania bazodanowego.
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
Olbrzymie możliwości i wszechstronność serwera Apache uczyniły go najbardziej rozpowszechnionym serwerem WWW. Kilka miesięcy temu Apache Software Foundation opublikowała nową wersję Apache 2.0. Najnowsza edycja Apache jest lepiej przystosowana do pracy na różnych platform systemowych niż wersja 1.3, dzięki czemu coraz częściej można spotkać Apache pracującego pod kontrolą Windows czy Mac OS. Stało się to możliwe dzięki wprowadzeniu modułów zwielokrotnionego przetwarzania, tzw. MPM (ang. Multiprocessing Module), dostosowanych do właściwości rozmaitych systemów operacyjnych, jak również wprowadzeniu przenośnych bibliotek fazy wykonywania (ang. Apache Portable Runtime). Porównując Apache 2.0 z wcześniejszymi wersjami zauważymy też istotne zmiany w procesie kompilacji i konsolidacji serwera.
Apache 2.0 to nie tylko zaawansowana architektura serwera, ale również liczne udoskonalenia i nowe funkcje. Książka ta stanowi obszerny i wyczerpujący przewodnik po wszelkich nowościach wprowadzonych w wersji 2.0. Znajdziesz w niej także informacje o zmianach wprowadzonych w porównaniu z poprzednimi wersjami.
Do kogo adresowana jest ta książka?
Książka jest napisana z myślą o profesjonalistach, którzy zamierzają zainstalować oprogramowanie Apache 2.0 w roli serwera WWW lub uaktualnić zainstalowaną wcześniejszą wersję. Monografia "Apache 2.0 dla zaawansowanych" jest także źródłem informacji niezbędnych przy kompilowaniu serwera oraz przy konfiguracji i dostosowywaniu jego funkcjonalności do indywidualnych wymagań. Zawiera ona liczne przykłady, z których skorzystają programiści i administratorzy.
Zagadnienia omówione w książce
* Nowy serwer WWW Apache 2.0 oraz sposoby uaktualniania z Apache 1.3
* Nowe funkcje Apache dostępne wersji w 1.3 i proponowane możliwości migracji serwera WWW do nowej wersji Apache 2.0
* Instalacja serwera Apache w oparciu o dystrybucje binarne oraz kompilowanie serwera z kodu źródłowego dla systemów operacyjnych UNIX i Windows
* Bezpieczne i wydajne tworzenie dynamicznej zawartości stron WWW za pomocą skryptów CGI i FastCGI
* Implementacje wirtualnych hostów w ramach serwera Apache w prostym i złożonym modelu, a także masowe tworzenie hostów wirtualnych
* Przystosowywanie serwerów Apache do sprawowania funkcji serwera pośredniczącego; zagadnienia związane z buforowaniem zawartości WWW, odpornością na błędy i testowaniem wydajności, a także tworzenie klastrów serwerów WWW
* Monitorowanie i zabezpieczanie serwerów Apache
* Rozszerzanie możliwości serwera Apache poprzez włączanie dodatkowych modułów do obsługi programów w językach Perl, Python, PHP, Tcl, Java, Ruby i protokole WebDAV
Książka dostarczy Ci unikatowej wiedzy na temat wewnętrznych mechanizmów działania systemu Windows 2000. Została napisana we współpracy z zespołem tworzącym Windows 2000, a jej autorzy mieli pełen dostęp do kodu źródłowego systemu. Znajdziesz tutaj informacje niedostępne w innych źródłach, pozwalające pisać wydajniejsze aplikacje przeznaczone dla platformy Windows 2000. Z książki skorzystają również administratorzy systemowi. Zrozumienie tajemnic mechanizmów systemu operacyjnego ułatwi im odnalezienie źródła problemu w przypadku awarii.
Poznaj wszystkie tajemnice Windows 2000:
* Podstawowe pojęcia: Win32 API, procesy, wątki i prace, tryb jądra i tryb użytkownika
* Architektura systemu -- kluczowe komponenty
* Mechanizmy systemowe: obsługa przerwań, menedżer obiektów, synchronizacja, systemowe wątki wykonawcze
* Proces uruchamiania i zamykania systemu
* Mechanizmy zarządzania,
* Zarządzanie procesami, wątkami i pracami
* Zarządzanie pamięcią
* Zagadnienia związane z bezpieczeństwem systemu
* Podsystem wejścia-wyjścia
* Zarządzanie pamięcią masową, systemy plików
* Menedżer pamięci podręcznej
* Praca systemu Windows 2000 w sieciach lokalnych i Internecie
Jeśli poważnie myślisz o tworzeniu oprogramowania dla Windows 2000 lub chcesz nim w pełni profesjonalnie administrować, Microsoft Windows 2000. Od środka stanowić będzie ważną pozycję w Twojej bibliotece. Bardziej szczegółowego opisu tego systemu operacyjnego nie znajdziesz w żadnej innej książce.
Książka omawia niezwykłą technologię. Flash MX łączy piękno projektowania graficznego z wygodą programowania zorientowanego obiektowo, wprowadzając nową jakość do świata aplikacji internetowych. W książce tej zawarto wszystkie informacje pozwalające w pełni wykorzystać możliwości Flasha MX. Jest ona adresowana do dwóch grup odbiorców: artystów i programistów. Wiadomo, że nie każdy artysta chce zostać programistą, podobnie jak nie każdy programista posiada uzdolnienia artystyczne. Treść niniejszej książki będzie jednak użyteczna zarówno dla jednych, jak i drugich. Tworzenie za pomocą Flasha wymaga bowiem połączenia obu dziedzin, zaś w przypadku Flasha MX zasada ta ma jeszcze głębsze znaczenie niż dotychczas.
"Flash MX. Vademecum profesjonalisty" to kompletne źródło informacji, począwszy od wiadomości podstawowych, poprzez omówienie twórczych technik, aż po wyczerpujące omówienie języka ActionScript.
* Dowiedz się, jakie zmiany wprowadzono w sposobie pracy i funkcjonowania interfejsu Flasha
* Użyj nowych rozwiązań Named Anchors i Shared Objects, usprawniających współpracę Flasha z przeglądarką
* Wykorzystaj animacjach Flasha materiały wideo, korzystając z nowych możliwości importowania ścieżek wideo
* Skorzystaj z komponentów Flasha, by przyspieszyć proces tworzenia rozbudowanych aplikacji internetowych
* Użyj nowych poleceń ActionScript, umożliwiających rysowanie na obrazie za pomocą skryptów
* Zastosuj w filmie Flasha prawa fizyki tak, by obiekty poruszały się w naturalny sposób
Jody Keating jest dyrektorem pomocniczym do spraw mediów interaktywnych w firmie Fig Leaf Software (jednej z czołowych firm programistycznych intensywnie korzystających z technologii Flash) oraz ekspertem i instruktorem certyfikowanym przez firmę Macromedia. Nad książką pracował zespół specjalistów pod przewodnictwem Jody, każdy z nich podzielił się wiadomościami z dziedziny, w której się specjalizuje.
"Niesłychane! Książka "Flash MX. Vademecum profesjonalisty" jest znakomicie zorganizowana i wyjątkowo wyczerpująca. Absolutnie niezbędna pozycja dla każdego użytkownika programu Flash, który poważnie podchodzi do tego, co robi."
Tony Novak, 2Advanced Studios
Tworzenie aplikacji i usług WWW za pomocą JSP i XML-a
* Naucz się praktycznego wykorzystania XML w stronach JSP
* Poznaj tajniki parsowania DOM i SAX oraz wady i zalety poszczególnych parserów
* Naucz się przetwarzania dokumentów XML za pomocą XSLT
* Stwórz własne usługi WWW (web services) i udostępnij je innym
Java wydaje się idealnym językiem do przetwarzania XML-a. W oparciu o Javę stworzono olbrzymią liczbę aplikacji korzystających z XML, zarówno przeznaczonych dla użytkownika końcowego, jak i rozmaitych bibliotek, parserów itp., z których z powodzeniem korzystają programiści. Ostatnim krzykiem mody są usługi WWW (web services). I znowu, Java jest jedną z najpopularniejszych platform do ich implementacji, także z tego względu, że usługi WWW oparte są o XML.
"JSP i XML" pokazuje praktyczne aspekty wykorzystania XML-a do budowy aplikacji WWW przy wykorzystaniu Java Server Pages (JSP). Po omówieniu podstaw JSP oraz XML i towarzyszących mu standardów (XSL, XPath, DOM) autor opisuje bardziej zaawansowane aspekty użycia XML w projektach opartych o JSP, by przejść do omówienia metod tworzenia usług WWW.
W książce omówiono:
* XML, XSL i XPath
* DOM i parsery DOM (JDOM, dom4j)
* Szybkie parsowanie za pomocą SAX
* Tworzenie własnych znaczników JSP
* Uruchamianie własnych usług WWW
* Opis usługi WWW za pomocą WSDL
Książce towarzyszą dodatki poświęcone konfiguracji środowiska programistycznego, wprowadzeniu do JSP, tworzeniu bibliotek znaczników JSP oraz standardom XML, XSLT i Xpath.
Programowanie obiektowe w Visual Basic .NET dla każdegoWydawnictwo Helion
Visual Basic to język programowania pozwalający nawet początkującym programistom pisać zaawansowane aplikacje wykorzystujące wszystkie możliwości systemów operacyjnych z rodziny Windows. Jego kolejne wersje w coraz większym stopniu korzystały z technik programowania zorientowanego obiektowo (OOP). Najnowsza z nich, Visual Basic .NET jest uwieńczeniem tej ewolucji.
Jeśli chcesz tworzyć aplikacje w VB .NET, musisz nauczyć się programować obiektowo. Z pewnością pomoże Ci w tym książka „Programowanie obiektowe w Visual Basic .NET”. Informacje w niej zawarte przydadzą się także, gdy zaczniesz używać innych języków programowania opartych na obiektach, takich jak C++, C# czy Java.
Ten podręcznik, łączący praktyczne ćwiczenia z niezbędną dawką przydatnej teorii, nauczy Cię samodzielnie tworzyć aplikacje używające obiektów, dziedziczenia, poliformizmu i sterowania za pomocą zdarzeń. Dowiesz się również jak obsługiwać błędy. Odrębne rozdziały poświęcono obiektom zdalnym (aplikacjom klient-serwer), udostępnianiu aplikacji poprzez Internet tworzeniu atrakcyjnego interfejsu użytkownika oraz językowi XML. Poznasz także środowisko projektowe Visual Studio .NET. Swoją wiedzę będziesz mógł sprawdzić za pomocą licznych quizów.
Książka zawiera:
* Wprowadzenie do programowania obiektowego w Visual Basic .NET
* Wyjaśnienie terminologii związanej z programowaniem obiektowym
* Omówienie środowiska Visual Studio .NET oraz tworzenia interfejsów użytkownika za pomocą Windows Forms i WebForms
* Praktyczne ćwiczenia i quizy sprawdzające wiedzę
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...Wydawnictwo Helion
Drugie wydanie książki "RS 232C -- praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera" to kompendium wiedzy adresowane do osób zajmujących się tworzeniem oprogramowania sterującego urządzeniami podłączanymi przez port szeregowy. Książka umożliwia zdobycie wiedzy niezbędnej, by przy użyciu narzędzi Delphi i Builder tworzyć w Pascalu i C++ własne programy do obsługi transmisji szeregowej.
W książce przedstawiono:
* Opis metod realizacji nowoczesnej transmisji asynchronicznej poprzez interfejs RS 232C
* Opis wszystkich, niezbędnych funkcji oraz struktur najczęściej wykorzystywanych do realizacji transmisji szeregowej oferowanych przez Win32 API
* Metody realizacji transmisji buforowanej oraz niebuforowanej
* Metody realizacji transmisji szeregowej z wykorzystaniem portów USB
* Kompletne przykłady oryginalnych algorytmów stosowanych przy obsłudze łącza szeregowego
Nowe wydanie zostało zaktualizowane i poprawione. Dodano nowe rozdziały opisujące tworzenie własnych komponentów obsługi portu szeregowego oraz transmisję szeregową z wykorzystaniem portu USB. Dokładny opis USB, standardu zdobywającego ostatnio ogromne uznanie, to kolejny powód, dla którego warto mieć tę książkę.
Dołączony do książki CD-ROM zawiera:
* Przykładowe programy napisane w C++ i Pascalu.
* Kompletne kody źródłowe aplikacji napisanych w C++Builderze 5.
* Kody źródłowe aplikacji napisanych w Delphi 6.
Bazy danych należą do najpopularniejszych programów. Student, profesor, sekretarka, właściciel firmy, lekarz -- każdy potrzebuje bazy danych. Zbuduj relacyjną bazę danych do zarządzania kolekcją płyt, adresami znajomych, gabinetem lekarskim lub przedsiębiorstwem korzystając ze znakomitego programu Microsoft Access 2002.
Wielką zaletą programu Access 2002, składnika pakietu Microsoft Office XP, jest to, że jest on narzędziem do tworzenia zarówno prostych, jak i złożonych baz danych. Nie bez znaczenia jest również fakt, że bazę danych utworzoną za pomocą tego programu, można w dowolnej chwili rozbudować lub zmodyfikować (oczywiście, jeżeli ma się do tego uprawnienia), a nawet przystosować do pracy z Microsoft SQL Server.
Książka "Access 2002.Tworzenie baz danych"-- przeznaczona zarówno dla początkujących, jak i doświadczonych użytkowników programu Access -- wyjaśnia, jak zbudować relacyjną bazę danych z wykorzystaniem narzędzi do wizualnego tworzenia obiektów baz danych.
W książce omówiono m.in.:
* Tabele, formularze, raporty, makra, strony dostępu do danych
* Formanty
* Kwerendy wybierające, krzyżowe, tworzące tabele, aktualizujące, dołączające oraz usuwające
* Tabele i wykresy przestawne
* ADOX oraz ADO - uniwersalny interfejs dostępu do danych
* Asystent pakietu Office
* Tworzenie pasków menu, pasków narzędzi i menu kontekstowego
* Zabezpieczanie bazy danych
* Access 2002 a Internet
* Procedury w Visual Basicu służące do automatyzacji działania bazy danych
Dołączony do książki CD-ROM zawiera:
* 18 baz danych oraz ich kod źródłowy w języku Visual Basic
Cyfrowa rewolucja nie ominęła technologii zapisu obrazu. Zapis cyfrowy pozwala na uzyskanie materiału znacznie lepszej jakości niż tradycyjne metody analogowe. W dodatku kamery cyfrowe są powszechnie dostępne i… coraz tańsze.
Książka "Tworzenie cyfrowego wideo" jest podręcznikiem zarówno dla osób dopiero zaczynających przygodę z tworzeniem amatorskich filmów, jak i dla osób z pewnym doświadczeniem w tej dziedzinie.
Omawia ona nie tylko sam proces rejestracji materiału, ale także późniejszy jego montaż, udźwiękowienie, edycję za pomocą odpowiednich programów (w tym Adobe Premiere) oraz zapis w postaci plików wideo. Jest też przewodnikiem pozwalający na zorientowanie się w bogatej ofercie kamer i akcesoriów dostępnych na rynku.
Dowiesz się z niej:
* Dlaczego cyfrowa kamera wideo jest lepsza od analogowej?
* Jak dobrać cyfrową kamerę wideo stosownie do potrzeb?
* Jak obsługiwać cyfrową kamerę wideo?
* Jaki komputer najlepiej nadaje się do przetwarzania obrazu wideo?
* W jaki sposób edytować obraz wideo w komputerze?
* Jaki jest najlepszy sposób rozpowszechniania własnych nagrań?
* Czym różni się nagranie wideo od filmu i czy kamerą cyfrową można nakręcić film?
* Jak tworzyć własne płyty DVD?
W książce znajdziesz jedenaście praktycznych ćwiczeń, pomocnych w sprawdzeniu nabytych wiadomości a także wiele adresów stron internetowych, których zawartość rozszerzy Twoją wiedzę.
* Wybierz właściwą kamerę i dobierz do niej odpowiednie akcesoria
* Naucz się podstaw rejestracji obrazu i dźwięku za pomocą kamery cyfrowej
* Samodzielnie zmontuj nagrany materiał, popraw dźwięk, dodaj efekty wizualne i dźwiękowe
* Naucz się tworzyć własne płyty DivX i DVD
Flash MX to aplikacja o oszałamiających możliwościach. Dynamiczne prezentacje, łączenie grafiki z dźwiękiem, animacje -- to tylko część zastosowań tego najpopularniejszego narzędzia multimedialnego stworzonego na potrzeby Internetu. Jeśli chcesz wzbogacić swoje strony WWW o atrakcyjne animacje -- po prostu sięgnij po tę książkę. Bez zbędnych opisów wprowadzi Cię ona w świat Flasha MX.
Dowiesz się:
* Jak funkcjonuje środowisko Flash i jakie nowości wprowadzono w wersji MX
* Jak tworzyć i modyfikować grafikę we Flashu
* Jak wykorzystać możliwości pracy z warstwami
* Jak używać symboli
* Jak tworzyć animacje
* Jak stworzyć animację reagującą na działania użytkownika
* Jak łączyć animacje z dźwiękiem i obrazem wideo
* ... i wiele więcej
Systematycznie lub wyrywkowo: czytaj tę książkę tak, jak chcesz. Zwięzłe objaśnienia i towarzyszące im liczne ilustracje oraz przykłady doprowadzą Cię wprost do celu.
Chcesz czegoś więcej niż być tylko biernym odbiorcą treści dostępnych w Internecie? Nic trudnego. Potrzebne Ci będą: komputer podłączony stałym łączem do sieci, publiczny adres IP i ta książka. Stworzenie własnego serwera to niezależność (możesz robić z nim co zechcesz), niższe koszty (nie musisz płacić za utrzymanie stron WWW dostawcy Internetu), a także możliwość stania się pełnoprawnym członkiem Internetowej społeczności.
Książka "Po prostu własny serwer internetowy" opisuje krok po kroku instalację i konfigurację serwerów WWW, FTP, pocztowego i serwera grup dyskusyjnych w systemie Linux. Dzięki licznym przykładom plików konfiguracyjnych i praktycznym wskazówkom, sprawnie i szybko poradzisz sobie z uruchomieniem własnego serwera.
Opisano:
* Instalację i konfigurację serwera WWW Apache w wersjach 1.3 i 2.0
* Instalację i konfigurację serwera FTP ProFTPD
* Instalację i konfigurację serwerów SMTP Sendmail i Postfix
* Instalację i konfigurację serwera grup dyskusyjnych INN
* Zabezpieczanie serwerów za pomocą zapór sieciowych
* Konfigurację programów klienckich dla odpowiednich serwerów
Wszystkie programy opisane w książce wraz z kodami źródłowymi są dostępne za darmo.
Chcesz stworzyć forum dyskusyjne dla odwiedzających Twoją stronę internetową? A może chcesz założyć listę dystrybucyjną, której subskrybenci będą powiadamiani o ważnych wydarzeniach związanych ze stroną? E-mail to jedna z najbardziej uniwersalnych usług internetowych, a listy dystrybucyjne stanowią znakomite narzędzie w procesie tworzenia społeczności sieciowych. Aby założyć listę potrzebujesz jedynie dostępu do Internetu, odpowiedniego programu do zarządzania nią i oczywiście nieco praktycznych informacji zawartych w tej książce. "Prowadzenie list dystrybucyjnych" to prawdziwa kopalnia przydatnej wiedzy zarówno dla prowadzących listy, jak i dla administratorów systemów.
Jeśli jesteś odpowiedzialny za stworzenie i prowadzenie listy dystrybucyjnej, w tej książce znajdziesz wszystkie potrzebne Ci informacje: od stworzenia wewnętrznego regulaminu listy, do rozwiązywania problemów z powracającymi, nieodebranymi wiadomościami. Nauczysz się tworzyć listy moderowane, nadzorować zapisywanie się nowych użytkowników oraz konfigurować listy dystrybucyjne tak, by ich użytkownicy mogli otrzymywać streszczenia prowadzonych tam dyskusji i korzystać z jej archiwów. Z książki "Prowadzenie list dystrybucyjnych" dowiesz się także, które aspekty obsługi listy leżą w Twojej gestii, a które należą do zadań administratora.
Dobór właściwego oprogramowania, sposób jego instalacji i konfiguracji, to przedstawione w książce tematy, które mogą zainteresować administratorów sieci. Znajdą oni w książce wiele cennych wskazówek ułatwiających współpracę z osobami odpowiedzialnymi za funkcjonowanie list.
Książka omawia cztery najpopularniejsze programy do obsługi list dystrybucyjnych: Majordomo, LISTSERV, ListProc i SmartList. Działają one pod kontrolą systemów opartych na Uniksie, LISTERV działa także na innych platformach, w tym Windows NT/2000/XP.
Książka "W sercu PC -- według Petera Nortona" to pozycja zarówno dla początkujących, jak i dla zaawansowanych użytkowników komputerów. Jeśli chcesz dobrze zrozumieć działanie komputera, umieć go optymalnie skonfigurować, a w razie pojawienia się problemów poradzić sobie z ich usunięciem, sięgnij po tę pozycję. Dzięki książce rozpoznasz ogromną liczbę podzespołów, urządzeń peryferyjnych i innych opcjonalnych rozszerzeń przeznaczonych dla nowoczesnych "pecetów". Książka stanowi również niezbędną pomoc przy konfiguracji i obsłudze komputera.
Nazwisko Petera Nortona -- jednego z wiodących światowych ekspertów w dziedzinie komputerów PC - to gwarancja najwyższego poziomu przekazanych w książce informacji. Jej najnowsze wydanie zawiera gruntownie przerobiony i zaktualizowany materiał, opisujący najnowsze tendencje w świecie komputerów osobistych.
Co można zyskać, przeczytawszy tę książkę?
* Znajomość podstawowych podzespołów płyty głównej komputera PC
* Wiedzę na temat różnych procesorów (ich wydajności, wspólnych cech i różnic)
* Solidne podstawy do poznawania zagadnień sieciowych
* Zrozumienie zaawansowanych zagadnień dotyczących pamięci komputerów PC
* Szeroką wiedzę na temat kart grafiki i wyświetlaczy
* Poznanie różnych metod druku komputerowego
* Poszerzenie wiedzy na temat zagadnień komunikacyjnych, w tym modemów i łącz szerokopasmowych
* Znajomość dysków IDE i SCSI
* Zrozumienie najważniejszych etapów rozruchu komputera PC
* Zapoznanie się z językami komputerowymi
* Możliwość spojrzenia w przyszłość technologii komputerowych
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
Książka opisuje doskonałą platformę programistyczną dla MS Windows. Opisuje ona PHP na tyle szczegółowo, że osoby zainteresowane mogą potraktować ją jako podręcznik tego języka. Jej szczególną zaletą jest wyczerpujące omówienie integracji PHP z technologiami Windows. Dzięki książce dowiesz się, jak tworzyć i wykorzystywać obiekty COM w PHP, jak łączyć PHP z platformą .NET, jak korzystać z ActiveDirectory oraz jak używać MSXML.
"PHP. Programowanie w systemie Windows. Vademecum profesjonalisty" zawiera również opis:
* Instalacji PHP w systemie Windows
* Konfigurowania i optymalizacji serwerów WWW
* Języka PHP i jego funkcji
* Łączenia PHP z bazami danych (Microsoft SQL Server, Oracle i MySQL)
* Użycia XML i XSLT w PHP
* Integracji PHP z ASP przy użyciu WDDX
* Tworzenia usług WWW w PHP
Jeśli planujesz używać PHP w systemach Windows, książka ta stanie się dla Ciebie nieocenioną pomocą. Gwarancję dobrej jakości stanowi również nazwisko autora. Andrew Stopford jest programistą z wieloletnim doświadczeniem, członkiem wielu zespołów pracujących nad projektami typu "open-source", między innymi XML-RPC for ASP i NMatrix.
* Spraw, aby AutoCAD zrobił więcej, niż kiedykolwiek uważałeś za możliwe!
* Zautomatyzuj najbardziej złożone zadania konstrukcyjne
* Zintegruj dane rysunkowe z innymi systemami przedsiębiorstwa, bazami danych oraz Internetem
* Steruj obszarem rysunku, rzutniami oraz wydrukiem
* Zbuduj krok po kroku kompletną aplikację bazy danych dla AutoCAD-a
AutoCAD 2002 jest nie tylko najpopularniejszym na świecie narzędziem do projektowania i kreślenia: to także potężna, programowalna platforma służąca do automatyzacji złożonych zadań projektowych integrująca dane projektowe z firmowymi systemami informatycznymi i pozwalająca rozwiązać wiele problemów technicznych i biznesowych. Kluczem do tych możliwości jest język Visual Basic for Applications. Kluczem do programowania za pomocą tego języka jest książka "AutoCAD 2002. Tworzenie makr w VBA"
Jej autorowi, jak nikomu innemu, udało się powiązać kluczowe narzędzia AutoCAD-a z możliwościami języka VBA. Ukazując współdziałanie AutoCAD-a i VBA w warunkach rzeczywistej pracy pomagają czytelnikowi tworzyć praktyczne aplikacje.
W kolejnych etapach czytelnik:
* Przejmie kontrolę nad AutoCAD-em: opanuje podstawy automatyzacji, COM oraz programowanie zorientowane obiektowo
* Zacznie swobodnie poruszać się po interaktywnym środowisku projektowania VBA dla AutoCAD-a
* Wniknie w budowę pliku DXF, aby lepiej zrozumieć strukturę bazy danych rysunku AutoCAD-a
* Opanuje model obiektu AutoCAD-a: dokumenty, interfejs użytkownika, zarządzanie plikami, zbiory, obiekty i inne elementy
* Zautomatyzuje obiekty graficzne 2D i 3D, zewnętrzne odniesienia, elementy, bryły, wymiary oraz zdarzenia
* Zastosuje język VBA do sterowania obszarem papieru, rzutniami oraz wydrukiem
* Poszerzy możliwości AutoCAD-a o komunikację z innymi aplikacjami
Pogłębisz swoje umiejętności śledząc powstawanie kompletnej aplikacji, integrującej rysunek AutoCAD-a z bazą danych Microsoft Access za pomocą technologii DAO (Data Access Objects) Microsoftu. Książka "AutoCAD 2002. Tworzenie makr w VBA" zawiera również zwięzłe opisy zmiennych systemowych i wyliczeniowych AutoCAD-a, dziedziczenia obiektów oraz elementów graficznych. Jeśli jesteś gotów okiełznać całą moc zawartą w AutoCAD-zie 2002, jest to książka której szukałeś!
O autorze:
Jeffrey E. Clark używa AutoCAD-a w swojej pracy od 15 lat, stworzył kilka komercyjnych aplikacji tego systemu. Jego prace publikowane były w wielu wydawnictwach [więcej...]
Asembler dla procesorów Intel. Vademecum profesjonalistyWydawnictwo Helion
Chociaż świat programowania nieodwołalnie zdominowany jest przez języki wyższego poziomu (takie jak C, C++ czy Java), znajomość asemblera jest nadal wysoko ceniona. Użycie języka maszynowego pozwala na pisanie niezwykle wydajnych programów, odwołujących się bezpośrednio do sprzętu, wykorzystujących w 100% możliwości hardware"u.
Książka "Asembler dla procesorów Intel. Vademecum profesjonalisty" to kompletny przewodnik po języku programowania najpopularniejszej rodziny procesorów. Możesz ją traktować jako podręcznik asemblera lub jako kompendium wiedzy, do którego zawsze będziesz mógł się odwołać, gdy zajdzie taka potrzeba. Znajdziesz w niej informacje dotyczące:
* architektury mikroprocesorów i zestawu rozkazów procesorów z rodziny Intel 80x86
* dyrektyw, makr i operatorów języka asembler oraz podstawowej struktury programu
* metodologii programowania oraz sposobów użycia języka asembler do tworzenia narzędzi systemowych i aplikacji
* sposobów pracy z urządzeniami sprzętowymi
* interakcji między programem napisanym w języku asembler, systemem operacyjnym a innymi aplikacjami
* śledzenia przebiegu wykonania programu za pomocą debugera
Oprócz krótkich przykładów książka "Asembler dla procesorów Intel. Vademecum profesjonalisty" zawiera 75 gotowych do uruchomienia programów, które realizują koncepcje prezentowane w tekście. Znajdujące się na końcu książki dodatki stanowią przewodniki po przerwaniach MS-DOS i mnemonikach kodu maszynowego.
Jeśli masz Excela, a potrzebujesz programu księgowego, zastanów się, czy warto go kupować.
Bogate możliwości Excela pozwalają użyć go do wielu typowych zastosowań biurowych, upraszczając i przyspieszając wykonywanie typowych czynności biurowych. Ta książka przekaże Ci całą potrzebną wiedzę na ten temat.
* Zautomatyzuj wystawianie dokumentów: rachunków, ofert i faktur
* Ewidencjonuj obecność pracowników i czas pracy, twórz kalendarze
* Prowadź rejestry zobowiązań i należności
* Twórz atrakcyjne wykresy i wzbogać nimi swoje arkusze
* CD-ROM towarzyszący książce zawiera wszystkie szablony i liczne przykłady
Wbrew nazwie, głównym zastosowaniem arkuszy kalkulacyjnych nie są obliczenia. Potężne możliwości Excela pozwalają na automatyzację wielu żmudnych czynności biurowych, takich jak wystawianie faktur czy prowadzenie rozmaitych ewidencji. Excel pozwala nie tylko na wykonywanie działań arytmetycznych, ale także świetnie radzi sobie z zarządzaniem danymi, w wielu sytuacjach zastępując wyspecjalizowane programy księgowe i bazy danych.
Od teorii do praktyki prowadzi jednak długa droga. Dzięki książce "Excel w biurze i nie tylko" pokonasz ją szybko i bezboleśnie. Nauczysz się budowy zautomatyzowanych skoroszytów, które przydadzą się w każdej firmie, oszczędzając mnóstwo pracy i pieniędzy, które musiałbyś wydać na zakup innych programów.
Dowiesz się jak zautomatyzować:
* Tworzenie ofert cenowych
* Wypisywanie kwot słownie
* Wystawianie dowodów sprzedaży
* Wystawianie dowodów kupna/sprzedaży dewiz
* Wystawianie dowodów dostawy
* Wystawianie rachunków, zwykłych i za usługi
* Obsługę zamówień
* Wystawianie faktur VAT
* Obliczanie odsetek
* Tworzenie kalendarzy
* Ewidencjonowanie obecności i czasu pracy
* Rozliczanie paliwa
* Tworzenie rejestrów zobowiązań i należności finansowych
* Prezentowanie danych na wykresach
Masz już Excela, a dalej jesteś przysypany papierami? Niepotrzebnie! Zacznij używać Excela nie tylko jako kalkulatora, a przekonasz się, że wiele żmudnych czynności znacznie się uprości. Wszystkie szablony i przykłady znajdziesz na CD-ROM-ie dołączonym do książki.
MySQL zajmuje szczególną pozycję wśród systemów obsługi relacyjnych baz danych. Dzięki dużej wydajności, prostocie obsługi i dostępności interfejsów programistycznych dla wielu języków programowania, osiągnął ogromną popularność w zastosowaniach internetowych. Jeśli dysponujesz ograniczonym budżetem, powinieneś rozważyć użycie darmowego systemu, który pod wieloma względami może konkurować z drogimi systemami komercyjnymi. MySQL rozwija się zresztą bardzo dynamicznie, a jego kolejne wersje dysponują coraz to bardziej wyrafinowanymi funkcjami.
Do kogo adresowana jest ta książka?
"Bazy danych i MySQL. Od podstaw" to pozycja zarówno dla początkujących, jak i dla zaawansowanych użytkowników MySQL-a. Początkujący dowiedzą się jak instalować i konfigurować system MySQL, nauczą się projektowania wydajnych baz danych i zgłębią tajemnice języka SQL. Doświadczeni programiści będą mogli poznać interfejs pozwalający na korzystanie z MySQL-a z poziomu ich ulubionego języka programowania (książka omawia C, C++, Perla, PHP i Javę). Zainteresować ich powinny także rozdziały poświęcone wzorcom projektowym stosowanym przy tworzeniu aplikacji bazodanowych i omówienie mechanizmu transakcji, zaimplementowanego w najnowszych wersjach MySQL-a.
Co zawiera ta książka?
* Przystępne omówienie zagadnień związanych z projektowaniem baz danych
* Opis kompilacji, instalacji, konfiguracji i obsługi systemu MySQL
* Kompletny kurs języka SQL w wersji implementowanej w MySQL
* Prezentację narzędzi ułatwiających pracę z MySQL
* Omówienie zagadnień związanych z administracją systemem bazodanowym (replikacja, tworzenie kopii zapasowych, odtwarzanie danych)
* Opis interfejsów umożliwiających pisanie aplikacji bazodanowych w językach C, C++, PHP, Perl i Java
* Dodatki, zawierające m.in. skorowidz poleceń SQL i informacje na temat obsługi dużych obiektów (pola BLOB)
Autorzy szybko nauczą Cię korzystać z MySQL-a, dzięki czemu więcej czasu zostanie Ci na właściwe zadania.
JavaScript jest językiem sieci. Jest to język intuicyjny i łatwy do przyswojenia. Jego wielką zaletą jest dostępność w większości nowoczesnych przeglądarek WWW. Dzięki JavaScriptowi możemy tworzyć dynamiczne, interaktywne strony WWW. Język ten najczęściej wykorzystywany jest do sprawdzania poprawności formularzy, tworzenia dynamicznych menu, a także do programowania gier. Jednak możliwości tego języka są znacznie większe. Trudno powiedzieć, czy istnieje chociaż jedna komercyjna witryna WWW, która nie zawiera w ogóle JavaScriptu.
Książka "JavaScript. Zaawansowane programowanie" zawiera wszechstronny opis języka JavaScript, jego składni i zastosowań. Na początek zaprezentujemy najnowsze przeglądarki i standardy stosowane w WWW, a następnie przedstawimy praktyczne techniki w postaci krótkich przykładów oraz bardziej szczegółowych i złożonych analiz konkretnych rozwiązań. Niniejsza książka koncentruje się wyłącznie na wykorzystaniu JavaScriptu w przeglądarkach WWW, ponieważ głównie w nich język ten jest stosowany.
Dla kogo jest ta książka?
Dla każdego, komu potrzebny jest JavaScript do tworzenia aplikacji WWW uruchamianych po stronie klienta. Czytelnikom znającym już język JavaScript, książka ta może posłużyć jako aktualny, zaawansowany poradnik; natomiast tym, którzy znają już inny język programowania, pozwoli opanować JavaScript jako nową umiejętność.
Co opisuje ta książka?
* Podstawowe programowanie w JavaScripcie
* Wykorzystanie w skryptach obiektów przeglądarek
* Pracę z multimediami
* Standardy WWW, w tym XML, CSS i W3C DOM
* Dynamiczny HTML
* Techniki uruchamiania skryptów
* Wyrażenia regularne i walidację formularzy
* Analizę przykładów zastosowań praktycznych
* Propozycja ECMAScript Edition 4
Naszym celem jest pomagać Czytelnikom w osiągnięciu sukcesu, dzieląc się wiedzą doświadczonych programistów na każdym etapie Waszych karier.
Wprowadzenie do problematyki algorytmów i struktur danych
* Badanie złożoności algorytmów
* Analiza i implementacja algorytmów
* Zasady testowania kodu
Algorytmy leżą u podstaw programowania. Zasady rozwiązywania typowych problemów programistycznych, opisane w postaci blokowej lub za pomocą uniwersalnego "pseudokodu", są wykorzystywane codziennie przez tysiące informatyków na całym świecie. Właściwe zrozumienie zarówno samych algorytmów, jak i zasad ich stosowania w praktyce, jest kluczem do tworzenia wydajnych aplikacji. Umiejętność oceny efektywności i złożoności algorytmów przyda się również przy wyborze najlepszego rozwiązania określonego problemu.
Książka "Algorytmy. Od podstaw" przedstawia podstawowe zagadnienia związane z algorytmami. Dzięki niej nauczysz się wyznaczać złożoność obliczeniową algorytmów i implementować algorytmy w programach. Poznasz algorytmy sortowania, przeszukiwania i przetwarzania danych. Dowiesz się, czym są testy jednostkowe i dlaczego ich stosowanie jest tak ważne podczas tworzenia oprogramowania.
W książce omówiono m.in. następujące zagadnienia:
* Testy jednostkowe i biblioteka JUnit
* Iteracja i rekurencja
* Kolejki FIFO
* Listy i stosy
* Algorytmy sortowania
* Binarne wyszukiwanie i zastępowanie
* Zbiory, mapy i drzewa wyszukiwawcze
* Wyszukiwanie tekstu
Poznaj sprawdzone i powszechnie używane algorytmy
i zastosuj je w swoich aplikacjach.
W niniejszej książce przedstawiono struktury danych i algorytmy stanowiące podstawę współczesnego programowania komputerów. Algorytmy są niczym przepis na rozwiązanie postawionego przed programistę problemu. Są one nierozerwalnie związane ze strukturami danych - listami, rekordami, tablicami, kolejkami, drzewami... podstawowymi elementami wiedzy każdego programisty.
Książka obejmuje szeroki zakres materiału, a do jej lektury wystarczy znajomość dowolnego języka programowania strukturalnego (np. Pascala). Opis klasycznych algorytmów uzupełniono o algorytmy związane z zarządzaniem pamięcią operacyjną i pamięciami zewnętrznymi.
Książka przedstawia algorytmy i struktury danych w kontekście rozwiązywania problemów za pomocą komputera. Z tematyką rozwiązywania problemów powiązano zagadnienie zliczania kroków oraz złożoności czasowej - wynika to z głębokiego przekonania autorów tej książki, iż wraz z pojawianiem się coraz szybszych komputerów, pojawiać się będą także coraz bardziej złożone problemy do rozwiązywania i - paradoksalnie - złożoność obliczeniowa używanych algorytmów zyskiwać będzie na znaczeniu.
W książce omówiono m.in.:
* Tradycyjne struktury danych: listy, kolejki, stosy
* Drzewa i operacje na strukturach drzew
* Typy danych oparte na zbiorach, słowniki i kolejki priorytetowe wraz ze sposobami ich implementacji
* Grafy zorientowane i niezorientowane
* Algorytmy sortowania i poszukiwania mediany
* Asymptotyczne zachowanie się procedur rekurencyjnych
* Techniki projektowania algorytmów: "dziel i rządź", wyszukiwanie lokalne i programowanie dynamiczne
* Zarządzanie pamięcią, B-drzewa i struktury indeksowe
Każdemu rozdziałowi towarzyszy zestaw ćwiczeń, o zróżnicowanym stopniu trudności, pomagających sprawdzić swoją wiedzę. "Algorytmy i struktury danych" to doskonały podręcznik dla studentów informatyki i pokrewnych kierunków, a także dla wszystkich zainteresowanych tą tematyką.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Metody numeryczne są to sposoby rozwiązywania złożonych problemów matematycznych za pomocą narzędzi obliczeniowych udostępnianych przez popularne języki programowania. Jeden z najpopularniejszych języków -- Pascal, będący podstawą języka ObjectPascal wykorzystywanego w Delphi, pozwala na bardzo łatwą implementację mechanizmów obliczeń numerycznych. Specyfika projektowania aplikacji w środowisku Delphi pozwala na utworzenie komponentów realizujących algorytmy numeryczne i stosowanie ich w wielu aplikacjach.
Książka "Algorytmy numeryczne w Delphi. Księga eksperta" przedstawia najczęściej wykorzystywane metody numeryczne wraz z przykładami ich implementacji w języku ObjectPascal. Każde zagadnienie jest omówione zarówno od strony teoretycznej, jak i praktycznej, co ułatwia jego zrozumienie i pozwala na modyfikacje zamieszczonych w książce kodów źródłowych.
* Typy, funkcje, klasy i procedury wykorzystywane w algorytmach numerycznych
* Algebra macierzy i równania liniowe
* Badanie funkcji
* Rozwiązywanie równań nieliniowych i wyznaczanie wartości własnych macierzy
* Układy równań różniczkowych liniowych i nieliniowych
* Przekształcenia Fouriera i Laplace’a
Niemal każdy problem obliczeniowy można rozwiązać za pomocą metod numerycznych. Nie musisz więc wymyślać ponownie koła -- wystarczy, że poznasz opisane w tej książce algorytmy.
Książka dostarczy Ci unikatowej wiedzy na temat wewnętrznych mechanizmów działania systemu Windows 2000. Została napisana we współpracy z zespołem tworzącym Windows 2000, a jej autorzy mieli pełen dostęp do kodu źródłowego systemu. Znajdziesz tutaj informacje niedostępne w innych źródłach, pozwalające pisać wydajniejsze aplikacje przeznaczone dla platformy Windows 2000. Z książki skorzystają również administratorzy systemowi. Zrozumienie tajemnic mechanizmów systemu operacyjnego ułatwi im odnalezienie źródła problemu w przypadku awarii.
Poznaj wszystkie tajemnice Windows 2000:
* Podstawowe pojęcia: Win32 API, procesy, wątki i prace, tryb jądra i tryb użytkownika
* Architektura systemu -- kluczowe komponenty
* Mechanizmy systemowe: obsługa przerwań, menedżer obiektów, synchronizacja, systemowe wątki wykonawcze
* Proces uruchamiania i zamykania systemu
* Mechanizmy zarządzania,
* Zarządzanie procesami, wątkami i pracami
* Zarządzanie pamięcią
* Zagadnienia związane z bezpieczeństwem systemu
* Podsystem wejścia-wyjścia
* Zarządzanie pamięcią masową, systemy plików
* Menedżer pamięci podręcznej
* Praca systemu Windows 2000 w sieciach lokalnych i Internecie
Jeśli poważnie myślisz o tworzeniu oprogramowania dla Windows 2000 lub chcesz nim w pełni profesjonalnie administrować, Microsoft Windows 2000. Od środka stanowić będzie ważną pozycję w Twojej bibliotece. Bardziej szczegółowego opisu tego systemu operacyjnego nie znajdziesz w żadnej innej książce.
Książka omawia niezwykłą technologię. Flash MX łączy piękno projektowania graficznego z wygodą programowania zorientowanego obiektowo, wprowadzając nową jakość do świata aplikacji internetowych. W książce tej zawarto wszystkie informacje pozwalające w pełni wykorzystać możliwości Flasha MX. Jest ona adresowana do dwóch grup odbiorców: artystów i programistów. Wiadomo, że nie każdy artysta chce zostać programistą, podobnie jak nie każdy programista posiada uzdolnienia artystyczne. Treść niniejszej książki będzie jednak użyteczna zarówno dla jednych, jak i drugich. Tworzenie za pomocą Flasha wymaga bowiem połączenia obu dziedzin, zaś w przypadku Flasha MX zasada ta ma jeszcze głębsze znaczenie niż dotychczas.
"Flash MX. Vademecum profesjonalisty" to kompletne źródło informacji, począwszy od wiadomości podstawowych, poprzez omówienie twórczych technik, aż po wyczerpujące omówienie języka ActionScript.
* Dowiedz się, jakie zmiany wprowadzono w sposobie pracy i funkcjonowania interfejsu Flasha
* Użyj nowych rozwiązań Named Anchors i Shared Objects, usprawniających współpracę Flasha z przeglądarką
* Wykorzystaj animacjach Flasha materiały wideo, korzystając z nowych możliwości importowania ścieżek wideo
* Skorzystaj z komponentów Flasha, by przyspieszyć proces tworzenia rozbudowanych aplikacji internetowych
* Użyj nowych poleceń ActionScript, umożliwiających rysowanie na obrazie za pomocą skryptów
* Zastosuj w filmie Flasha prawa fizyki tak, by obiekty poruszały się w naturalny sposób
Jody Keating jest dyrektorem pomocniczym do spraw mediów interaktywnych w firmie Fig Leaf Software (jednej z czołowych firm programistycznych intensywnie korzystających z technologii Flash) oraz ekspertem i instruktorem certyfikowanym przez firmę Macromedia. Nad książką pracował zespół specjalistów pod przewodnictwem Jody, każdy z nich podzielił się wiadomościami z dziedziny, w której się specjalizuje.
"Niesłychane! Książka "Flash MX. Vademecum profesjonalisty" jest znakomicie zorganizowana i wyjątkowo wyczerpująca. Absolutnie niezbędna pozycja dla każdego użytkownika programu Flash, który poważnie podchodzi do tego, co robi."
Tony Novak, 2Advanced Studios
Tworzenie aplikacji i usług WWW za pomocą JSP i XML-a
* Naucz się praktycznego wykorzystania XML w stronach JSP
* Poznaj tajniki parsowania DOM i SAX oraz wady i zalety poszczególnych parserów
* Naucz się przetwarzania dokumentów XML za pomocą XSLT
* Stwórz własne usługi WWW (web services) i udostępnij je innym
Java wydaje się idealnym językiem do przetwarzania XML-a. W oparciu o Javę stworzono olbrzymią liczbę aplikacji korzystających z XML, zarówno przeznaczonych dla użytkownika końcowego, jak i rozmaitych bibliotek, parserów itp., z których z powodzeniem korzystają programiści. Ostatnim krzykiem mody są usługi WWW (web services). I znowu, Java jest jedną z najpopularniejszych platform do ich implementacji, także z tego względu, że usługi WWW oparte są o XML.
"JSP i XML" pokazuje praktyczne aspekty wykorzystania XML-a do budowy aplikacji WWW przy wykorzystaniu Java Server Pages (JSP). Po omówieniu podstaw JSP oraz XML i towarzyszących mu standardów (XSL, XPath, DOM) autor opisuje bardziej zaawansowane aspekty użycia XML w projektach opartych o JSP, by przejść do omówienia metod tworzenia usług WWW.
W książce omówiono:
* XML, XSL i XPath
* DOM i parsery DOM (JDOM, dom4j)
* Szybkie parsowanie za pomocą SAX
* Tworzenie własnych znaczników JSP
* Uruchamianie własnych usług WWW
* Opis usługi WWW za pomocą WSDL
Książce towarzyszą dodatki poświęcone konfiguracji środowiska programistycznego, wprowadzeniu do JSP, tworzeniu bibliotek znaczników JSP oraz standardom XML, XSLT i Xpath.
Programowanie obiektowe w Visual Basic .NET dla każdegoWydawnictwo Helion
Visual Basic to język programowania pozwalający nawet początkującym programistom pisać zaawansowane aplikacje wykorzystujące wszystkie możliwości systemów operacyjnych z rodziny Windows. Jego kolejne wersje w coraz większym stopniu korzystały z technik programowania zorientowanego obiektowo (OOP). Najnowsza z nich, Visual Basic .NET jest uwieńczeniem tej ewolucji.
Jeśli chcesz tworzyć aplikacje w VB .NET, musisz nauczyć się programować obiektowo. Z pewnością pomoże Ci w tym książka „Programowanie obiektowe w Visual Basic .NET”. Informacje w niej zawarte przydadzą się także, gdy zaczniesz używać innych języków programowania opartych na obiektach, takich jak C++, C# czy Java.
Ten podręcznik, łączący praktyczne ćwiczenia z niezbędną dawką przydatnej teorii, nauczy Cię samodzielnie tworzyć aplikacje używające obiektów, dziedziczenia, poliformizmu i sterowania za pomocą zdarzeń. Dowiesz się również jak obsługiwać błędy. Odrębne rozdziały poświęcono obiektom zdalnym (aplikacjom klient-serwer), udostępnianiu aplikacji poprzez Internet tworzeniu atrakcyjnego interfejsu użytkownika oraz językowi XML. Poznasz także środowisko projektowe Visual Studio .NET. Swoją wiedzę będziesz mógł sprawdzić za pomocą licznych quizów.
Książka zawiera:
* Wprowadzenie do programowania obiektowego w Visual Basic .NET
* Wyjaśnienie terminologii związanej z programowaniem obiektowym
* Omówienie środowiska Visual Studio .NET oraz tworzenia interfejsów użytkownika za pomocą Windows Forms i WebForms
* Praktyczne ćwiczenia i quizy sprawdzające wiedzę
RS 232C - praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera. Wy...Wydawnictwo Helion
Drugie wydanie książki "RS 232C -- praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera" to kompendium wiedzy adresowane do osób zajmujących się tworzeniem oprogramowania sterującego urządzeniami podłączanymi przez port szeregowy. Książka umożliwia zdobycie wiedzy niezbędnej, by przy użyciu narzędzi Delphi i Builder tworzyć w Pascalu i C++ własne programy do obsługi transmisji szeregowej.
W książce przedstawiono:
* Opis metod realizacji nowoczesnej transmisji asynchronicznej poprzez interfejs RS 232C
* Opis wszystkich, niezbędnych funkcji oraz struktur najczęściej wykorzystywanych do realizacji transmisji szeregowej oferowanych przez Win32 API
* Metody realizacji transmisji buforowanej oraz niebuforowanej
* Metody realizacji transmisji szeregowej z wykorzystaniem portów USB
* Kompletne przykłady oryginalnych algorytmów stosowanych przy obsłudze łącza szeregowego
Nowe wydanie zostało zaktualizowane i poprawione. Dodano nowe rozdziały opisujące tworzenie własnych komponentów obsługi portu szeregowego oraz transmisję szeregową z wykorzystaniem portu USB. Dokładny opis USB, standardu zdobywającego ostatnio ogromne uznanie, to kolejny powód, dla którego warto mieć tę książkę.
Dołączony do książki CD-ROM zawiera:
* Przykładowe programy napisane w C++ i Pascalu.
* Kompletne kody źródłowe aplikacji napisanych w C++Builderze 5.
* Kody źródłowe aplikacji napisanych w Delphi 6.
Bazy danych należą do najpopularniejszych programów. Student, profesor, sekretarka, właściciel firmy, lekarz -- każdy potrzebuje bazy danych. Zbuduj relacyjną bazę danych do zarządzania kolekcją płyt, adresami znajomych, gabinetem lekarskim lub przedsiębiorstwem korzystając ze znakomitego programu Microsoft Access 2002.
Wielką zaletą programu Access 2002, składnika pakietu Microsoft Office XP, jest to, że jest on narzędziem do tworzenia zarówno prostych, jak i złożonych baz danych. Nie bez znaczenia jest również fakt, że bazę danych utworzoną za pomocą tego programu, można w dowolnej chwili rozbudować lub zmodyfikować (oczywiście, jeżeli ma się do tego uprawnienia), a nawet przystosować do pracy z Microsoft SQL Server.
Książka "Access 2002.Tworzenie baz danych"-- przeznaczona zarówno dla początkujących, jak i doświadczonych użytkowników programu Access -- wyjaśnia, jak zbudować relacyjną bazę danych z wykorzystaniem narzędzi do wizualnego tworzenia obiektów baz danych.
W książce omówiono m.in.:
* Tabele, formularze, raporty, makra, strony dostępu do danych
* Formanty
* Kwerendy wybierające, krzyżowe, tworzące tabele, aktualizujące, dołączające oraz usuwające
* Tabele i wykresy przestawne
* ADOX oraz ADO - uniwersalny interfejs dostępu do danych
* Asystent pakietu Office
* Tworzenie pasków menu, pasków narzędzi i menu kontekstowego
* Zabezpieczanie bazy danych
* Access 2002 a Internet
* Procedury w Visual Basicu służące do automatyzacji działania bazy danych
Dołączony do książki CD-ROM zawiera:
* 18 baz danych oraz ich kod źródłowy w języku Visual Basic
Cyfrowa rewolucja nie ominęła technologii zapisu obrazu. Zapis cyfrowy pozwala na uzyskanie materiału znacznie lepszej jakości niż tradycyjne metody analogowe. W dodatku kamery cyfrowe są powszechnie dostępne i… coraz tańsze.
Książka "Tworzenie cyfrowego wideo" jest podręcznikiem zarówno dla osób dopiero zaczynających przygodę z tworzeniem amatorskich filmów, jak i dla osób z pewnym doświadczeniem w tej dziedzinie.
Omawia ona nie tylko sam proces rejestracji materiału, ale także późniejszy jego montaż, udźwiękowienie, edycję za pomocą odpowiednich programów (w tym Adobe Premiere) oraz zapis w postaci plików wideo. Jest też przewodnikiem pozwalający na zorientowanie się w bogatej ofercie kamer i akcesoriów dostępnych na rynku.
Dowiesz się z niej:
* Dlaczego cyfrowa kamera wideo jest lepsza od analogowej?
* Jak dobrać cyfrową kamerę wideo stosownie do potrzeb?
* Jak obsługiwać cyfrową kamerę wideo?
* Jaki komputer najlepiej nadaje się do przetwarzania obrazu wideo?
* W jaki sposób edytować obraz wideo w komputerze?
* Jaki jest najlepszy sposób rozpowszechniania własnych nagrań?
* Czym różni się nagranie wideo od filmu i czy kamerą cyfrową można nakręcić film?
* Jak tworzyć własne płyty DVD?
W książce znajdziesz jedenaście praktycznych ćwiczeń, pomocnych w sprawdzeniu nabytych wiadomości a także wiele adresów stron internetowych, których zawartość rozszerzy Twoją wiedzę.
* Wybierz właściwą kamerę i dobierz do niej odpowiednie akcesoria
* Naucz się podstaw rejestracji obrazu i dźwięku za pomocą kamery cyfrowej
* Samodzielnie zmontuj nagrany materiał, popraw dźwięk, dodaj efekty wizualne i dźwiękowe
* Naucz się tworzyć własne płyty DivX i DVD
Flash MX to aplikacja o oszałamiających możliwościach. Dynamiczne prezentacje, łączenie grafiki z dźwiękiem, animacje -- to tylko część zastosowań tego najpopularniejszego narzędzia multimedialnego stworzonego na potrzeby Internetu. Jeśli chcesz wzbogacić swoje strony WWW o atrakcyjne animacje -- po prostu sięgnij po tę książkę. Bez zbędnych opisów wprowadzi Cię ona w świat Flasha MX.
Dowiesz się:
* Jak funkcjonuje środowisko Flash i jakie nowości wprowadzono w wersji MX
* Jak tworzyć i modyfikować grafikę we Flashu
* Jak wykorzystać możliwości pracy z warstwami
* Jak używać symboli
* Jak tworzyć animacje
* Jak stworzyć animację reagującą na działania użytkownika
* Jak łączyć animacje z dźwiękiem i obrazem wideo
* ... i wiele więcej
Systematycznie lub wyrywkowo: czytaj tę książkę tak, jak chcesz. Zwięzłe objaśnienia i towarzyszące im liczne ilustracje oraz przykłady doprowadzą Cię wprost do celu.
Chcesz czegoś więcej niż być tylko biernym odbiorcą treści dostępnych w Internecie? Nic trudnego. Potrzebne Ci będą: komputer podłączony stałym łączem do sieci, publiczny adres IP i ta książka. Stworzenie własnego serwera to niezależność (możesz robić z nim co zechcesz), niższe koszty (nie musisz płacić za utrzymanie stron WWW dostawcy Internetu), a także możliwość stania się pełnoprawnym członkiem Internetowej społeczności.
Książka "Po prostu własny serwer internetowy" opisuje krok po kroku instalację i konfigurację serwerów WWW, FTP, pocztowego i serwera grup dyskusyjnych w systemie Linux. Dzięki licznym przykładom plików konfiguracyjnych i praktycznym wskazówkom, sprawnie i szybko poradzisz sobie z uruchomieniem własnego serwera.
Opisano:
* Instalację i konfigurację serwera WWW Apache w wersjach 1.3 i 2.0
* Instalację i konfigurację serwera FTP ProFTPD
* Instalację i konfigurację serwerów SMTP Sendmail i Postfix
* Instalację i konfigurację serwera grup dyskusyjnych INN
* Zabezpieczanie serwerów za pomocą zapór sieciowych
* Konfigurację programów klienckich dla odpowiednich serwerów
Wszystkie programy opisane w książce wraz z kodami źródłowymi są dostępne za darmo.
Chcesz stworzyć forum dyskusyjne dla odwiedzających Twoją stronę internetową? A może chcesz założyć listę dystrybucyjną, której subskrybenci będą powiadamiani o ważnych wydarzeniach związanych ze stroną? E-mail to jedna z najbardziej uniwersalnych usług internetowych, a listy dystrybucyjne stanowią znakomite narzędzie w procesie tworzenia społeczności sieciowych. Aby założyć listę potrzebujesz jedynie dostępu do Internetu, odpowiedniego programu do zarządzania nią i oczywiście nieco praktycznych informacji zawartych w tej książce. "Prowadzenie list dystrybucyjnych" to prawdziwa kopalnia przydatnej wiedzy zarówno dla prowadzących listy, jak i dla administratorów systemów.
Jeśli jesteś odpowiedzialny za stworzenie i prowadzenie listy dystrybucyjnej, w tej książce znajdziesz wszystkie potrzebne Ci informacje: od stworzenia wewnętrznego regulaminu listy, do rozwiązywania problemów z powracającymi, nieodebranymi wiadomościami. Nauczysz się tworzyć listy moderowane, nadzorować zapisywanie się nowych użytkowników oraz konfigurować listy dystrybucyjne tak, by ich użytkownicy mogli otrzymywać streszczenia prowadzonych tam dyskusji i korzystać z jej archiwów. Z książki "Prowadzenie list dystrybucyjnych" dowiesz się także, które aspekty obsługi listy leżą w Twojej gestii, a które należą do zadań administratora.
Dobór właściwego oprogramowania, sposób jego instalacji i konfiguracji, to przedstawione w książce tematy, które mogą zainteresować administratorów sieci. Znajdą oni w książce wiele cennych wskazówek ułatwiających współpracę z osobami odpowiedzialnymi za funkcjonowanie list.
Książka omawia cztery najpopularniejsze programy do obsługi list dystrybucyjnych: Majordomo, LISTSERV, ListProc i SmartList. Działają one pod kontrolą systemów opartych na Uniksie, LISTERV działa także na innych platformach, w tym Windows NT/2000/XP.
Książka "W sercu PC -- według Petera Nortona" to pozycja zarówno dla początkujących, jak i dla zaawansowanych użytkowników komputerów. Jeśli chcesz dobrze zrozumieć działanie komputera, umieć go optymalnie skonfigurować, a w razie pojawienia się problemów poradzić sobie z ich usunięciem, sięgnij po tę pozycję. Dzięki książce rozpoznasz ogromną liczbę podzespołów, urządzeń peryferyjnych i innych opcjonalnych rozszerzeń przeznaczonych dla nowoczesnych "pecetów". Książka stanowi również niezbędną pomoc przy konfiguracji i obsłudze komputera.
Nazwisko Petera Nortona -- jednego z wiodących światowych ekspertów w dziedzinie komputerów PC - to gwarancja najwyższego poziomu przekazanych w książce informacji. Jej najnowsze wydanie zawiera gruntownie przerobiony i zaktualizowany materiał, opisujący najnowsze tendencje w świecie komputerów osobistych.
Co można zyskać, przeczytawszy tę książkę?
* Znajomość podstawowych podzespołów płyty głównej komputera PC
* Wiedzę na temat różnych procesorów (ich wydajności, wspólnych cech i różnic)
* Solidne podstawy do poznawania zagadnień sieciowych
* Zrozumienie zaawansowanych zagadnień dotyczących pamięci komputerów PC
* Szeroką wiedzę na temat kart grafiki i wyświetlaczy
* Poznanie różnych metod druku komputerowego
* Poszerzenie wiedzy na temat zagadnień komunikacyjnych, w tym modemów i łącz szerokopasmowych
* Znajomość dysków IDE i SCSI
* Zrozumienie najważniejszych etapów rozruchu komputera PC
* Zapoznanie się z językami komputerowymi
* Możliwość spojrzenia w przyszłość technologii komputerowych
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
Książka opisuje doskonałą platformę programistyczną dla MS Windows. Opisuje ona PHP na tyle szczegółowo, że osoby zainteresowane mogą potraktować ją jako podręcznik tego języka. Jej szczególną zaletą jest wyczerpujące omówienie integracji PHP z technologiami Windows. Dzięki książce dowiesz się, jak tworzyć i wykorzystywać obiekty COM w PHP, jak łączyć PHP z platformą .NET, jak korzystać z ActiveDirectory oraz jak używać MSXML.
"PHP. Programowanie w systemie Windows. Vademecum profesjonalisty" zawiera również opis:
* Instalacji PHP w systemie Windows
* Konfigurowania i optymalizacji serwerów WWW
* Języka PHP i jego funkcji
* Łączenia PHP z bazami danych (Microsoft SQL Server, Oracle i MySQL)
* Użycia XML i XSLT w PHP
* Integracji PHP z ASP przy użyciu WDDX
* Tworzenia usług WWW w PHP
Jeśli planujesz używać PHP w systemach Windows, książka ta stanie się dla Ciebie nieocenioną pomocą. Gwarancję dobrej jakości stanowi również nazwisko autora. Andrew Stopford jest programistą z wieloletnim doświadczeniem, członkiem wielu zespołów pracujących nad projektami typu "open-source", między innymi XML-RPC for ASP i NMatrix.
* Spraw, aby AutoCAD zrobił więcej, niż kiedykolwiek uważałeś za możliwe!
* Zautomatyzuj najbardziej złożone zadania konstrukcyjne
* Zintegruj dane rysunkowe z innymi systemami przedsiębiorstwa, bazami danych oraz Internetem
* Steruj obszarem rysunku, rzutniami oraz wydrukiem
* Zbuduj krok po kroku kompletną aplikację bazy danych dla AutoCAD-a
AutoCAD 2002 jest nie tylko najpopularniejszym na świecie narzędziem do projektowania i kreślenia: to także potężna, programowalna platforma służąca do automatyzacji złożonych zadań projektowych integrująca dane projektowe z firmowymi systemami informatycznymi i pozwalająca rozwiązać wiele problemów technicznych i biznesowych. Kluczem do tych możliwości jest język Visual Basic for Applications. Kluczem do programowania za pomocą tego języka jest książka "AutoCAD 2002. Tworzenie makr w VBA"
Jej autorowi, jak nikomu innemu, udało się powiązać kluczowe narzędzia AutoCAD-a z możliwościami języka VBA. Ukazując współdziałanie AutoCAD-a i VBA w warunkach rzeczywistej pracy pomagają czytelnikowi tworzyć praktyczne aplikacje.
W kolejnych etapach czytelnik:
* Przejmie kontrolę nad AutoCAD-em: opanuje podstawy automatyzacji, COM oraz programowanie zorientowane obiektowo
* Zacznie swobodnie poruszać się po interaktywnym środowisku projektowania VBA dla AutoCAD-a
* Wniknie w budowę pliku DXF, aby lepiej zrozumieć strukturę bazy danych rysunku AutoCAD-a
* Opanuje model obiektu AutoCAD-a: dokumenty, interfejs użytkownika, zarządzanie plikami, zbiory, obiekty i inne elementy
* Zautomatyzuje obiekty graficzne 2D i 3D, zewnętrzne odniesienia, elementy, bryły, wymiary oraz zdarzenia
* Zastosuje język VBA do sterowania obszarem papieru, rzutniami oraz wydrukiem
* Poszerzy możliwości AutoCAD-a o komunikację z innymi aplikacjami
Pogłębisz swoje umiejętności śledząc powstawanie kompletnej aplikacji, integrującej rysunek AutoCAD-a z bazą danych Microsoft Access za pomocą technologii DAO (Data Access Objects) Microsoftu. Książka "AutoCAD 2002. Tworzenie makr w VBA" zawiera również zwięzłe opisy zmiennych systemowych i wyliczeniowych AutoCAD-a, dziedziczenia obiektów oraz elementów graficznych. Jeśli jesteś gotów okiełznać całą moc zawartą w AutoCAD-zie 2002, jest to książka której szukałeś!
O autorze:
Jeffrey E. Clark używa AutoCAD-a w swojej pracy od 15 lat, stworzył kilka komercyjnych aplikacji tego systemu. Jego prace publikowane były w wielu wydawnictwach [więcej...]
Asembler dla procesorów Intel. Vademecum profesjonalistyWydawnictwo Helion
Chociaż świat programowania nieodwołalnie zdominowany jest przez języki wyższego poziomu (takie jak C, C++ czy Java), znajomość asemblera jest nadal wysoko ceniona. Użycie języka maszynowego pozwala na pisanie niezwykle wydajnych programów, odwołujących się bezpośrednio do sprzętu, wykorzystujących w 100% możliwości hardware"u.
Książka "Asembler dla procesorów Intel. Vademecum profesjonalisty" to kompletny przewodnik po języku programowania najpopularniejszej rodziny procesorów. Możesz ją traktować jako podręcznik asemblera lub jako kompendium wiedzy, do którego zawsze będziesz mógł się odwołać, gdy zajdzie taka potrzeba. Znajdziesz w niej informacje dotyczące:
* architektury mikroprocesorów i zestawu rozkazów procesorów z rodziny Intel 80x86
* dyrektyw, makr i operatorów języka asembler oraz podstawowej struktury programu
* metodologii programowania oraz sposobów użycia języka asembler do tworzenia narzędzi systemowych i aplikacji
* sposobów pracy z urządzeniami sprzętowymi
* interakcji między programem napisanym w języku asembler, systemem operacyjnym a innymi aplikacjami
* śledzenia przebiegu wykonania programu za pomocą debugera
Oprócz krótkich przykładów książka "Asembler dla procesorów Intel. Vademecum profesjonalisty" zawiera 75 gotowych do uruchomienia programów, które realizują koncepcje prezentowane w tekście. Znajdujące się na końcu książki dodatki stanowią przewodniki po przerwaniach MS-DOS i mnemonikach kodu maszynowego.
Jeśli masz Excela, a potrzebujesz programu księgowego, zastanów się, czy warto go kupować.
Bogate możliwości Excela pozwalają użyć go do wielu typowych zastosowań biurowych, upraszczając i przyspieszając wykonywanie typowych czynności biurowych. Ta książka przekaże Ci całą potrzebną wiedzę na ten temat.
* Zautomatyzuj wystawianie dokumentów: rachunków, ofert i faktur
* Ewidencjonuj obecność pracowników i czas pracy, twórz kalendarze
* Prowadź rejestry zobowiązań i należności
* Twórz atrakcyjne wykresy i wzbogać nimi swoje arkusze
* CD-ROM towarzyszący książce zawiera wszystkie szablony i liczne przykłady
Wbrew nazwie, głównym zastosowaniem arkuszy kalkulacyjnych nie są obliczenia. Potężne możliwości Excela pozwalają na automatyzację wielu żmudnych czynności biurowych, takich jak wystawianie faktur czy prowadzenie rozmaitych ewidencji. Excel pozwala nie tylko na wykonywanie działań arytmetycznych, ale także świetnie radzi sobie z zarządzaniem danymi, w wielu sytuacjach zastępując wyspecjalizowane programy księgowe i bazy danych.
Od teorii do praktyki prowadzi jednak długa droga. Dzięki książce "Excel w biurze i nie tylko" pokonasz ją szybko i bezboleśnie. Nauczysz się budowy zautomatyzowanych skoroszytów, które przydadzą się w każdej firmie, oszczędzając mnóstwo pracy i pieniędzy, które musiałbyś wydać na zakup innych programów.
Dowiesz się jak zautomatyzować:
* Tworzenie ofert cenowych
* Wypisywanie kwot słownie
* Wystawianie dowodów sprzedaży
* Wystawianie dowodów kupna/sprzedaży dewiz
* Wystawianie dowodów dostawy
* Wystawianie rachunków, zwykłych i za usługi
* Obsługę zamówień
* Wystawianie faktur VAT
* Obliczanie odsetek
* Tworzenie kalendarzy
* Ewidencjonowanie obecności i czasu pracy
* Rozliczanie paliwa
* Tworzenie rejestrów zobowiązań i należności finansowych
* Prezentowanie danych na wykresach
Masz już Excela, a dalej jesteś przysypany papierami? Niepotrzebnie! Zacznij używać Excela nie tylko jako kalkulatora, a przekonasz się, że wiele żmudnych czynności znacznie się uprości. Wszystkie szablony i przykłady znajdziesz na CD-ROM-ie dołączonym do książki.
MySQL zajmuje szczególną pozycję wśród systemów obsługi relacyjnych baz danych. Dzięki dużej wydajności, prostocie obsługi i dostępności interfejsów programistycznych dla wielu języków programowania, osiągnął ogromną popularność w zastosowaniach internetowych. Jeśli dysponujesz ograniczonym budżetem, powinieneś rozważyć użycie darmowego systemu, który pod wieloma względami może konkurować z drogimi systemami komercyjnymi. MySQL rozwija się zresztą bardzo dynamicznie, a jego kolejne wersje dysponują coraz to bardziej wyrafinowanymi funkcjami.
Do kogo adresowana jest ta książka?
"Bazy danych i MySQL. Od podstaw" to pozycja zarówno dla początkujących, jak i dla zaawansowanych użytkowników MySQL-a. Początkujący dowiedzą się jak instalować i konfigurować system MySQL, nauczą się projektowania wydajnych baz danych i zgłębią tajemnice języka SQL. Doświadczeni programiści będą mogli poznać interfejs pozwalający na korzystanie z MySQL-a z poziomu ich ulubionego języka programowania (książka omawia C, C++, Perla, PHP i Javę). Zainteresować ich powinny także rozdziały poświęcone wzorcom projektowym stosowanym przy tworzeniu aplikacji bazodanowych i omówienie mechanizmu transakcji, zaimplementowanego w najnowszych wersjach MySQL-a.
Co zawiera ta książka?
* Przystępne omówienie zagadnień związanych z projektowaniem baz danych
* Opis kompilacji, instalacji, konfiguracji i obsługi systemu MySQL
* Kompletny kurs języka SQL w wersji implementowanej w MySQL
* Prezentację narzędzi ułatwiających pracę z MySQL
* Omówienie zagadnień związanych z administracją systemem bazodanowym (replikacja, tworzenie kopii zapasowych, odtwarzanie danych)
* Opis interfejsów umożliwiających pisanie aplikacji bazodanowych w językach C, C++, PHP, Perl i Java
* Dodatki, zawierające m.in. skorowidz poleceń SQL i informacje na temat obsługi dużych obiektów (pola BLOB)
Autorzy szybko nauczą Cię korzystać z MySQL-a, dzięki czemu więcej czasu zostanie Ci na właściwe zadania.
JavaScript jest językiem sieci. Jest to język intuicyjny i łatwy do przyswojenia. Jego wielką zaletą jest dostępność w większości nowoczesnych przeglądarek WWW. Dzięki JavaScriptowi możemy tworzyć dynamiczne, interaktywne strony WWW. Język ten najczęściej wykorzystywany jest do sprawdzania poprawności formularzy, tworzenia dynamicznych menu, a także do programowania gier. Jednak możliwości tego języka są znacznie większe. Trudno powiedzieć, czy istnieje chociaż jedna komercyjna witryna WWW, która nie zawiera w ogóle JavaScriptu.
Książka "JavaScript. Zaawansowane programowanie" zawiera wszechstronny opis języka JavaScript, jego składni i zastosowań. Na początek zaprezentujemy najnowsze przeglądarki i standardy stosowane w WWW, a następnie przedstawimy praktyczne techniki w postaci krótkich przykładów oraz bardziej szczegółowych i złożonych analiz konkretnych rozwiązań. Niniejsza książka koncentruje się wyłącznie na wykorzystaniu JavaScriptu w przeglądarkach WWW, ponieważ głównie w nich język ten jest stosowany.
Dla kogo jest ta książka?
Dla każdego, komu potrzebny jest JavaScript do tworzenia aplikacji WWW uruchamianych po stronie klienta. Czytelnikom znającym już język JavaScript, książka ta może posłużyć jako aktualny, zaawansowany poradnik; natomiast tym, którzy znają już inny język programowania, pozwoli opanować JavaScript jako nową umiejętność.
Co opisuje ta książka?
* Podstawowe programowanie w JavaScripcie
* Wykorzystanie w skryptach obiektów przeglądarek
* Pracę z multimediami
* Standardy WWW, w tym XML, CSS i W3C DOM
* Dynamiczny HTML
* Techniki uruchamiania skryptów
* Wyrażenia regularne i walidację formularzy
* Analizę przykładów zastosowań praktycznych
* Propozycja ECMAScript Edition 4
Naszym celem jest pomagać Czytelnikom w osiągnięciu sukcesu, dzieląc się wiedzą doświadczonych programistów na każdym etapie Waszych karier.
Wprowadzenie do problematyki algorytmów i struktur danych
* Badanie złożoności algorytmów
* Analiza i implementacja algorytmów
* Zasady testowania kodu
Algorytmy leżą u podstaw programowania. Zasady rozwiązywania typowych problemów programistycznych, opisane w postaci blokowej lub za pomocą uniwersalnego "pseudokodu", są wykorzystywane codziennie przez tysiące informatyków na całym świecie. Właściwe zrozumienie zarówno samych algorytmów, jak i zasad ich stosowania w praktyce, jest kluczem do tworzenia wydajnych aplikacji. Umiejętność oceny efektywności i złożoności algorytmów przyda się również przy wyborze najlepszego rozwiązania określonego problemu.
Książka "Algorytmy. Od podstaw" przedstawia podstawowe zagadnienia związane z algorytmami. Dzięki niej nauczysz się wyznaczać złożoność obliczeniową algorytmów i implementować algorytmy w programach. Poznasz algorytmy sortowania, przeszukiwania i przetwarzania danych. Dowiesz się, czym są testy jednostkowe i dlaczego ich stosowanie jest tak ważne podczas tworzenia oprogramowania.
W książce omówiono m.in. następujące zagadnienia:
* Testy jednostkowe i biblioteka JUnit
* Iteracja i rekurencja
* Kolejki FIFO
* Listy i stosy
* Algorytmy sortowania
* Binarne wyszukiwanie i zastępowanie
* Zbiory, mapy i drzewa wyszukiwawcze
* Wyszukiwanie tekstu
Poznaj sprawdzone i powszechnie używane algorytmy
i zastosuj je w swoich aplikacjach.
W niniejszej książce przedstawiono struktury danych i algorytmy stanowiące podstawę współczesnego programowania komputerów. Algorytmy są niczym przepis na rozwiązanie postawionego przed programistę problemu. Są one nierozerwalnie związane ze strukturami danych - listami, rekordami, tablicami, kolejkami, drzewami... podstawowymi elementami wiedzy każdego programisty.
Książka obejmuje szeroki zakres materiału, a do jej lektury wystarczy znajomość dowolnego języka programowania strukturalnego (np. Pascala). Opis klasycznych algorytmów uzupełniono o algorytmy związane z zarządzaniem pamięcią operacyjną i pamięciami zewnętrznymi.
Książka przedstawia algorytmy i struktury danych w kontekście rozwiązywania problemów za pomocą komputera. Z tematyką rozwiązywania problemów powiązano zagadnienie zliczania kroków oraz złożoności czasowej - wynika to z głębokiego przekonania autorów tej książki, iż wraz z pojawianiem się coraz szybszych komputerów, pojawiać się będą także coraz bardziej złożone problemy do rozwiązywania i - paradoksalnie - złożoność obliczeniowa używanych algorytmów zyskiwać będzie na znaczeniu.
W książce omówiono m.in.:
* Tradycyjne struktury danych: listy, kolejki, stosy
* Drzewa i operacje na strukturach drzew
* Typy danych oparte na zbiorach, słowniki i kolejki priorytetowe wraz ze sposobami ich implementacji
* Grafy zorientowane i niezorientowane
* Algorytmy sortowania i poszukiwania mediany
* Asymptotyczne zachowanie się procedur rekurencyjnych
* Techniki projektowania algorytmów: "dziel i rządź", wyszukiwanie lokalne i programowanie dynamiczne
* Zarządzanie pamięcią, B-drzewa i struktury indeksowe
Każdemu rozdziałowi towarzyszy zestaw ćwiczeń, o zróżnicowanym stopniu trudności, pomagających sprawdzić swoją wiedzę. "Algorytmy i struktury danych" to doskonały podręcznik dla studentów informatyki i pokrewnych kierunków, a także dla wszystkich zainteresowanych tą tematyką.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Metody numeryczne są to sposoby rozwiązywania złożonych problemów matematycznych za pomocą narzędzi obliczeniowych udostępnianych przez popularne języki programowania. Jeden z najpopularniejszych języków -- Pascal, będący podstawą języka ObjectPascal wykorzystywanego w Delphi, pozwala na bardzo łatwą implementację mechanizmów obliczeń numerycznych. Specyfika projektowania aplikacji w środowisku Delphi pozwala na utworzenie komponentów realizujących algorytmy numeryczne i stosowanie ich w wielu aplikacjach.
Książka "Algorytmy numeryczne w Delphi. Księga eksperta" przedstawia najczęściej wykorzystywane metody numeryczne wraz z przykładami ich implementacji w języku ObjectPascal. Każde zagadnienie jest omówione zarówno od strony teoretycznej, jak i praktycznej, co ułatwia jego zrozumienie i pozwala na modyfikacje zamieszczonych w książce kodów źródłowych.
* Typy, funkcje, klasy i procedury wykorzystywane w algorytmach numerycznych
* Algebra macierzy i równania liniowe
* Badanie funkcji
* Rozwiązywanie równań nieliniowych i wyznaczanie wartości własnych macierzy
* Układy równań różniczkowych liniowych i nieliniowych
* Przekształcenia Fouriera i Laplace’a
Niemal każdy problem obliczeniowy można rozwiązać za pomocą metod numerycznych. Nie musisz więc wymyślać ponownie koła -- wystarczy, że poznasz opisane w tej książce algorytmy.
Wykorzystaj pełnię możliwości baz danych
* Na czym polega model relacyjny?
* W jaki sposób pobierać dane z bazy?
* Jak projektować bazy danych i tabele?
Systemy zarządzania bazami danych to aplikacje, które spotkać można praktycznie w każdej firmie.
Na rynku dostępnych jest wiele takich narzędzi, różniących się od siebie wydajnością, wymaganiami sprzętowymi, potencjalnymi zastosowaniami i - przede wszystkim — ceną. Użytkownicy mogą wybierać zarówno wśród rozwiązań komercyjnych, jak i nieustępujących im rozwiązań bezpłatnych. Cechą łączącą wszystkie systemy zarządzania bazami danych jest język, na którym opiera się praca z nimi - SQL. To ustandaryzowany zbiór poleceń pozwalających na niemal dowolne manipulacje danymi zgromadzonymi w bazach, tworzenie nowych baz oraz administrowanie serwerami baz danych. Bez jego znajomości wykorzystanie pełni możliwości bazy danych jest praktycznie niemożliwe.
„Praktyczny kurs SQL” to książka, dzięki której poznasz ten język. Czytając ją, dowiesz się, czym jest relacyjność w bazach danych, jak skonstruowane są takie bazy i czym są postaci normalne. Nauczysz się pobierać dane w oparciu o różne kryteria, przetwarzać uzyskane wyniki i wyświetlać je na ekranie w odpowiedni sposób. Poznasz funkcje pozwalające na modyfikację istniejących i dodawanie nowych danych, zastosujesz zapytania złożone i podzapytania oraz wykorzystasz mechanizmy transakcji. Przeczytasz także o projektowaniu baz danych oraz definiowaniu i nadawaniu uprawnień do korzystania z nich.
* Modele baz danych
* Postaci normalne w modelu relacyjnym
* Historia języka SQL
* Pobieranie danych za pomocą instrukcji SELECT
* Dobór kryteriów wybierania
* Przetwarzanie wyników zapytań
* Zapytania złożone i podzapytania
* Transakcje
* Modyfikowanie i dodawanie danych
* Projektowanie baz danych
* Uprawnienia
Uzupełnieniem do książki jest udostępniona tutaj baza danych.
Poznaj w praktyce język będący podstawą wszystkich nowoczesnych systemów zarządzania bazami danych.
SQL jest uznawanym za standard językiem programowania służącym do tworzenia, modyfikowania oraz pobierania informacji przechowywanych przez systemy zarządzania relacyjnymi bazami danych. Chociaż każdy system bazodanowy używa nieco innego dialektu tego języka, często rozbudowując go o dodatkowe funkcje, podstawowe instrukcje SQL są wspólne dla wszystkich systemów: od Accessa do Oracle'a.
Bogata w ilustracje, napisana przystępnym językiem książka "SQL. Szybki start" pozwoli Ci nauczyć się SQL-a i zacząć pracę z relacyjną bazą danych, niezależnie od tego, który system wybierzesz. Autor kładzie szczególny nacisk na realizację konkretnych zadań, przedstawiając kolejne kroki, jakie należy wykonać, by rozwiązać dany problem. Dzięki temu książka jest nie tylko przewodnikiem po języku SQL i jego odmianach, ale także doskonałą pomocą, po którą będziesz często sięgał w swojej praktyce programistycznej.
W książce omówiono m.in.:
* Najpopularniejsze systemy bazodanowe, ich wady i zalety
* Relacyjny model danych
* Podstawy języka SQL: składnię i najważniejsze typy danych
* Pobieranie danych za pomocą zapytań
* Operatory i funkcje SQL
* Filtrowanie, grupowanie i sortowanie wyników zapytań
* Dodawanie, usuwanie i modyfikowanie danych
* Korzystanie z indeksów
* Używanie perspektyw
* Stosowanie transakcji
Przysłowie "kto pyta, nie błądzi" nie zawiera całej prawdy. Nie wystarczy pytać, trzeba jeszcze znajdować odpowiedzi. Książka "Programowanie w języku C. FAQ" to zbiór kilkuset odpowiedzi na najczęściej zadawane pytania na temat tego języka programowania. Z pewnością część z przedstawionych tu pytań już pojawiła się w Twojej praktyce programistycznej (pamiętasz, ile czasu straciłeś poszukując odpowiedzi?). Inne problemy dopiero się pojawią i jeśli na Twojej półce będzie ta książka, szybko znajdziesz w niej zwięzłe, ale wyczerpujące rozwiązanie często wzbogacone przykładem kodu źródłowego.
Chociaż książka żadną miarą nie powinna być traktowana jako podręcznik, z którego można nauczyć się programowania w C, z pewnością przyda się każdej osobie używającej tego języka w codziennej praktyce. Autor porusza wiele przydatnych zagadnień obejmujących szeroki zestaw tematów.
Omówiono między innymi:
* Deklaracje
* Struktury i unie
* Puste wskaźniki
* Wyrażenia
* Makroprocesor
* Alokację pamięci
* Różnice między standardami C
* Standardową bibliotekę wejścia-wyjścia
* Kwestie związane z systemami operacyjnymi
Programowanie w Prologu różni się zasadniczo od programowania w językach strukturalnych, takich jak Pascal czy C i językach obiektowych jak Java. Dla wielu osób zaczynających przygodę z Prologiem zaskoczeniem jest fakt, że pisanie programu w tym języku nie polega na kodowaniu algorytmu. Programista opisuje obiekty i związki między nimi, a także podaje warunki, jakie powinno spełniać szukane rozwiązanie. System sam przeprowadza obliczenia w oparciu o podane zależności logiczne, zaś programista jedynie częściowo może wpływać na sposób działania programu.
Książka "Prolog. Programowanie" to podręcznik tego niezwykłego języka programowania stosowanego przy rozwiązywaniu problemów z różnych dziedzin: od logiki matematycznej i symbolicznego rozwiązywania równań przez analizę języka naturalnego, aż do zagadnień związanych ze sztuczną inteligencją. Zawiera ona:
* Wprowadzenie do Prologu
* Podstawowe struktury danych
* Nawracanie, sterowanie nawracaniem za pomocą symbolu odcięcia
* Operacje wejścia/wyjścia
* Predykaty
* Składnię reguł gramatycznych i analizę języka naturalnego
* Wiele przykładowych programów
Wszystkim rozdziałom towarzyszą ćwiczenia. Uzupełnieniem tekstu książki są dodatki omawiające m.in. rozwiązania ćwiczeń i różnice między najważniejszymi wersjami Prologu.
"Prolog. Programowanie" to książka dla studentów matematyki i informatyki, a także dla wszystkich zainteresowanych programowaniem opartym na regułach logicznych. Jeśli chcesz podjąć wyzwanie i nauczyć się Prologu, jest książka dla Ciebie.
Każde zagadnienie do opanowania w 10 minut
Na temat języka SQL napisano już wiele książek. Wiele z nich, o niekwestionowanej jakości, obarcza jednak czytelnika mnogością dodatkowych informacji na temat teorii relacyjnych baz danych, ich projektowania i administrowania nimi. Mimo fundamentalnego znaczenia tych zagadnień użytkownik chciałby jednak skupić się na szczegółach samego języka SQL, poczynając od jego najprostszych elementów, by dopiero później, w miarę doskonalenia swej wiedzy i poznawania coraz bardziej złożonych elementów SQL sięgnąć do tematyki o charakterze bardziej ogólnym. Niniejsza książka jest wolna od opisanego syndromu, a każdy z jej rozdziałów czyta się w ciągu 10 minut. Pasjonująca przygoda z językiem SQL rozpoczyna się już w pierwszym rozdziale; w kolejnych Czytelnik zapoznaje się z coraz bardziej złożonymi zagadnieniami, jak:
* Podstawowe elementy baz danych -- tabele, kolumny, wiersze i klucze
* Pobieranie danych z tabeli i ich sortowanie
* Filtrowanie danych za pomocą fraz WHERE i operatorów AND, OR, IN, NOT i LIKE
* Tworzenie unii
* Wstawianie, aktualizacja i usuwanie danych
* Tworzenie i modyfikowanie tabel
* Tworzenie i wykorzystywanie perspektyw
* Wykorzystywanie procedur zapamiętanych
* Zarządzanie transakcjami
* Indeksowanie i powiązania między tabelami za pomocą kluczy
* Zastosowanie języka SQL na gruncie Visual C++ i Visual Basica oraz popularnych systemów baz danych, jak SQL Server 6x, 7 i 2000, MS Access, MS Query i MS ASP
Przykładową bazę danych możesz pobrać TUTAJ.
Wielu programistów poszukuje książki, która przedstawiłaby implementacje znanych algorytmów w Perlu. Niestety w podręcznikach do tego języka trudno znaleźć informacje na ten temat. Informatycy opracowali wiele technik związanych z często spotykanymi problemami, takimi jak:
* Przybliżone dopasowywanie tekstów (uwzględniające literówki)
* Znajdowanie korelacji w zbiorach danych
* Algorytmy związane z grami
* Przewidywanie zjawisk (np. obciążenia serwera WWW)
* Dopasowywanie wielomianowe i za pomocą funkcji sklejanych
* Szyfrowanie informacji
Dzięki algorytmom przedstawionym w niniejszej książce będziesz mógł poradzić sobie z tymi problemami używając wydajnego i łatwego do nauczenia się języka, jakim jest Perl.
Autorzy zakładają, że opanowałeś już składnię Perla i znasz jego podstawowe funkcje. Książka "Algorytmy w Perlu" przystępnie objaśni Ci, kiedy używać klasycznych technik programistycznych i w jakich rodzajach aplikacji znajdują one swoje zastosowanie, a przede wszystkim pokaże Ci, jak je implementować w Perlu.
Jeśli jesteś początkującym programistą, poznasz najważniejsze algorytmy, które pozwolą Ci rozwiązywać problemy programistyczne w sposób profesjonalny. Nawet jeśli znasz już podstawy algorytmiki, będziesz zapewne zaskoczony z jaką łatwością można je zastosować w Perlu. W książce znajdziesz nawet obowiązkowy program rysujący fraktale.
Jest to pierwsza książka spośród licznych pozycji poświęconych algorytmom, która demonstruje ich użycie za pomocą Perla.
Autorami są m.in. Jon Orwant, redaktor The Perl Journal i Jarkko Hietaniemi -- zarządzający biblioteką modułów CPAN. Wszyscy autorzy są stałymi współpracownikami CPAN, stąd wiele z przytoczonych tu fragmentów kodu możesz znaleźć w tej bibliotece.
"Poświęciłem lekturze wiele czasu przeznaczonego na sen -- tak ekscytująca jest ta książka"
Tom Christiansen
Język C++. Standardy kodowania. 101 zasad, wytycznych i zalecanych praktykWydawnictwo Helion
Czytelny i przejrzysty kod to podstawa sprawnego tworzenia aplikacji. W przypadku pracy zespołowej stosowanie wspólnego standardu kodowania to konieczność. Pisanie kodu w oparciu o określone standardy kodowania przyspiesza powstawanie programu, ułatwia komunikację pomiędzy członkami zespołu i pozwala na szybkie wdrożenie nowych programistów do projektu. Oczywiście, w każdej firmie lub zespole można ustalić własny standard kodowania -- ważne jest jednak, aby opierał się na określonych regułach, wynikających ze specyfiki języka programowania.
Książka "Język C++. Standardy kodowania. 101 zasad, wytycznych i zalecanych praktyk" zawiera opis wspomnianych reguł. Przedstawia zasady pisania kodu źródłowego i standaryzowania określonych zapisów, operacji i sposobów wykorzystania elementów języka C++. Każda z zasad jest szczegółowo omówiona i poparta praktycznymi przykładami. Książka prezentuje najlepsze ze znanych praktyk -- zarówno "starych", jak i tych, które całkiem niedawno uległy standaryzacji, oraz opisuje techniki, o których nie słyszeli nawet programiści z wieloletnim doświadczeniem.
* Organizacja kodu
* Styl projektowy i styl kodowania
* Skalowalność kodu
* Racjonalna i efektywna obsługa błędów
* Prawidłowe stosowanie elementów języka
* Odpowiednie korzystanie z STL
* Bezpieczeństwo typów
Usprawnij pracę, stosując standardy kodowania -- gdy za parę miesięcy będziesz musiał wrócić do swoich dzisiejszych programów, przekonasz się, że było warto.
Każdy z nas na co dzień korzysta z relacyjnych baz danych, czasem nawet nie zdając sobie z tego sprawy. Bazy danych zbierają to, co najcenniejsze w dzisiejszym świecie: informacje. Można je więc porównać do współczesnych skarbców.
Zrozumienie zasad projektowania baz danych umożliwia pełne wykorzystanie nowoczesnych aplikacji, niezbędnych w funkcjonowaniu niemal każdego przedsiębiorstwa. Pozwala na dobrą organizację, sprawne zarządzania danymi gromadzonymi przez poszczególne osoby.
"Wprowadzenie do baz danych" to książka dla kogoś, kto słyszał o bazach danych, ale nigdy tak naprawdę nie dowiedział się, czym są, co zawierają, jak je projektować i tworzyć. Książka napisana została z punktu widzenia osoby, której zadaniem jest utworzenie pierwszego w życiu projektu bazy danych lub która po prostu chce zdobyć wiedzę na ich temat.
Dzięki tej książce:
* Poznasz teorię baz danych, która pomoże zrozumieć ci, w jaki sposób funkcjonują bazy danych
* Zrozumiesz różnicę pomiędzy analizą a projektowaniem bazy danych oraz dowiesz się, w jaki sposób te dwie koncepcje ze sobą współistnieją
* Zrozumiesz potrzebę analizy podczas projektowania bazy danych
* Nauczysz się, jak na podstawie projektu zbudować fizyczną bazę danych
* Poznasz język programowania baz danych SQL
* Zrozumiesz znaczenie zarządzania bazami danych
* Nauczysz się budować aplikacje bazodanowe
Książka jest napisana prostym i przystępnym językiem, zrozumiałym zarówno dla początkujących programistów, jak i dla osób bez doświadczenia informatycznego. Przykłady prezentowane w książce oparte są na popularnym Accessie.
Jeśli jesteś osobą, która chce rozpocząć podróż po świecie baz danych, ale nie wiesz, od czego zacząć, ta książka jest właśnie dla Ciebie!
Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowejWydawnictwo Helion
Umiejętność programowania nie ma już charakteru czysto zawodowego. Księgowi muszą się posługiwać arkuszami kalkulacyjnymi i edytorami tekstu, fotografowie korzystają z edytorów zdjęć, muzycy programują syntezatory, zaś profesjonalni programiści tworzą skomplikowane aplikacje. Programowanie jest więc bardzo pożądaną umiejętnością, potrzebną nie tylko informatykom.
Projektowanie oprogramowania wymaga takich samych zdolności analitycznych, jak matematyka. Jednak, w przeciwieństwie do matematyki, praca z programami jest aktywnym sposobem zdobywania wiedzy. Obcowanie z oprogramowaniem daje możliwość stałej interakcji, co pozwala na zgłębianie wiedzy, eksperymentowanie z nią oraz na stałą samoocenę.
Autorzy tej klasycznej publikacji stawiają tezę, iż "każdy powinien nauczyć się, jak projektować oprogramowanie" i właśnie nauka podstaw projektowania jest jej tematem głównym. W książce znajdziesz wiele podstawowych algorytmów, wyjaśnienia takich pojęć, jak akumulacja wiedzy czy równość ekstensjonalna i intensjonalna, słowem wszystko to, co stanowi teoretyczną podstawę wiedzy programistycznej.
Poznasz między innymi:
* Podstawowe struktury, z których składają się programy komputerowe
* Proste i złożony typy danych
* Metody przetwarzania danych
* Programowanie z użyciem rekurencji, algorytmy z nawracaniem
* Projektowanie abstrakcyjne
* Sposoby gromadzenia wiedzy
* Wykorzystanie wektorów
Z lektury książki "Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowej" skorzystają zarówno studenci informatyki, jak też i słuchacze innych kierunków oraz wszystkie osoby, które chcą podbudować swoją wiedzę praktyczną solidnymi i przydatnymi podstawami teoretycznymi.
Kompletny przewodnik po języku asemblera
Asembler, mimo że jest zdecydowanie trudniejszy w nauce niż języki programowania wysokiego poziomu, jest wśród programisów bardzo popularny. Tworzone w nim programy są mniejsze, zajmują mniej pamięci i miejsca na dysku, a przede wszystkim działają szybciej. Opracowano język HLA, dzięki któremu programowanie w asemblerze przebiega płynnie i polega na analizie implementacji poszczególnych, wysokopoziomowych konstrukcji, znanych z języków takich jak C, C++ czy Pascal.
Książka "Asembler. Sztuka programowania" to podręcznik programowania w języku asemblera oparty na języku HLA. Opisuje 32-bitową architekturę procesorów Intel oraz zasady tworzenia programów w języku HLA. Przedstawia sposoby pisania, kompilacji i uruchamiania programów wykorzystujących różne, nawet najbardziej złożone typy danych.
* Wprowadzenie do języka HLA
* Sposoby reprezentacji danych
* Organizacja pamięci i tryby adresowania
* Typy danych
* Podział programu na procedury i moduły
* Sterowanie wykonaniem programu
* Instrukcje arytmetyczne
* Operacje na plikach
* Operacje bitowe i łańcuchowe
* Makrodefinicje
* Klasy i obiekty
* Połączenie asemblera z programami w innych językach
Przekonaj się, jak prosty jest język asemblera.
Zamiast długich tekstów -- rysunki z dokładnymi objaśnieniami.Samodzielna nauka nigdy nie była tak prosta
Znaczenie baz danych trudno przecenić. Służą one nie tylko jako magazyny informacji, ale co ważniejsze, pozwalają na niezwykle szybkie ich przeszukiwanie. W ciągu kilku sekund w tysiącach danych odnajdziesz te, których właśnie potrzebujesz i zaprezentujesz je w formie rozmaitych zestawień, a nawet wykresów. Baza danych pozwoli Ci gromadzić szczegółowe dane o kontrahentach czy produktach i przeprowadzać na nich dowolne operacje. Trudno dziś sobie wyobrazić nowoczesne przedsiębiorstwo, które nie korzystałoby z rozbudowanych baz danych. Program Microsoft Access to jeden z najprostszych w obsłudze i zarazem najpopularniejszy system bazodanowy powszechnie stosowany w firmach i instytucjach na całym świecie.
Książka "Access 2003 PL. Kurs" to nowoczesny podręcznik, dzięki któremu w krótkim czasie poznasz tę aplikację i nauczysz się używać jej w praktyce. Przystępny język, liczne ilustracje, ćwiczenia pokazujące jak krok po kroku realizować najczęstsze zadania -- to wszystko sprawi, że bez pomocy nauczyciela poznasz Accessa i powiększysz swoje kompetencje stając się bardziej cenionym i poszukiwanym pracownikiem.
Nauczysz się:
* Instalować Accessa i pakiet Office
* Tworzyć nowe bazy danych
* Projektować i modyfikować tabele przechowujące dane
* Wprowadzać dane do baz danych
* Wiązać ze sobą tabele za pomocą relacji
* Pisać własne kwerendy przeszukujące bazy danych
* Tworzyć wygodne formularze do wprowadzania danych
* Tworzyć eleganckie raporty na podstawie wybranych danych
* Zarządzać bazami danych
Książki wydawnictwa Helion z serii "Kurs" adresowane są do początkujących użytkowników komputerów, którzy chcą w krótkim czasie nabyć praktycznych umiejętności przydatnych w karierze zawodowej i codziennej pracy. Napisane przystępnym językiem i bogato ilustrowane są wspaniałą pomocą w samodzielnej nauce.
* Przeznaczony dla początkujących
* Praktyczne zadania omówione krok po kroku
* Przystępny i zrozumiały język
* Liczne ilustracje
* Idealny do samodzielnej nauki
Poznaj najpopularniejszą bazę danych dla Windows
Dane i informacje to dziś najcenniejszy towar. Systemy zarządzania bazami danych to potężne narzędzia, pozwalające nie tylko na przechowywanie danych, ale także na ich przetwarzanie, modyfikowanie i wydobywanie w oparciu o przeróżne kryteria. Podstawą wszystkich operacji na danych zgromadzonych w bazach jest język SQL -- narzędzie służące do manipulowania zbiorami informacji. SQL, przyjęty i zatwierdzony przez międzynarodowe organizacje i komitety standaryzacyjne, jest wykorzystywany w niemal wszystkich systemach zarządzania bazami danych. Każdy z producentów dodaje do niego "własne" elementy, ale rdzeń języka pozostaje taki sam niezależnie od platformy.
Książka "SQL. Od podstaw" to podręcznik języka SQL i omówienie zagadnień związanych z projektowaniem baz danych przeznaczone dla osób wkraczających dopiero w świat baz danych. Przedstawia podstawowe wyrażenia języka SQL, służące do wprowadzania danych do bazy, wyciągania ich oraz manipulowania nimi. Czytając tą tę książkę, dowiesz się, czym są złączenia i podzapytania, postaci normalne baz danych oraz transakcje i perspektywy. Poznasz sposoby projektowania tabel, zabezpieczania zgromadzonych w nich informacji oraz metody podnoszenia wydajności i szybkości działania baz danych.
* Struktura relacyjnych baz danych
* Wpisywanie danych do bazy
* Wydobywanie i porządkowanie danych
* Normalizacja i postaci normalne
* Projektowanie baz danych
* Operacje matematyczne, grupujące i agregujące
* Stosowanie złączeń i podzapytań
* Tworzenie i wykorzystywanie perspektyw
* Mechanizmy transakcyjne
* Podnoszenie wydajności bazy danych i optymalizowanie zapytań
Dzięki tej książce poznasz wszystko -- znajdziesz omówienie tego, co może okazać się potrzebne podczas projektowania i korzystania z baz danych.
Microsoft Access 2003 -- składnik pakietu Microsoft Office 2003 -- to niezwykle popularny program służący do tworzenia i obsługi baz danych. Możesz go używać do przechowywania, porządkowania i analizowania informacji o ludziach, miejscach i zdarzeniach dotyczących Twojego życia. Jest on wykorzystywany przez ludzi biznesu, naukowców, handlowców i tych wszystkich, którzy w swojej pracy potrzebują dostępu do dużych zbiorów danych. Access ułatwia ich wprowadzanie, wyszukiwanie potrzebnych informacji; potrafi też przedstawić wybrany zestaw informacji w formie atrakcyjnych raportów wzbogaconych o różnego rodzaju wykresy.
Dla osoby pragnącej w krótkim czasie opanować obsługę popularnego Accessa nie ma lepszej książki niż "Po prostu Access 2003 PL". Access różni się od innych systemów bazodanowych wizualnym projektowaniem tabel, kwerend i raportów. Książkę z serii "Po prostu" wyróżniają podobne cechy: przystępność oraz wizualny, opierający się na licznych ilustracjach i zrzutach ekranowych sposób przedstawiania materiału.
Książka omawia:
* Podstawowe pojęcia związane z bazami danych
* Interfejs Accessa
* Tworzenie nowej bazy danych
* Tworzenie tabel
* Projektowanie formularzy
* Wyszukiwanie danych za pomocą kwerend
* Tworzenie raportów i zestawień
* Zaawansowane techniki przeszukiwania bazy danych
* Pracę z tabelami i wykresami przestawnymi
* Wymianę danych z innymi programami
* Korzystanie z Accessa w internecie
* Zarządzanie prawami użytkowników Accessa
* Tworzenie własnych menu i pasków narzędziowych
* Pisanie makrodefinicji i zapytań w języku SQL
Książka przeznaczona jest dla osób swobodnie posługujących się systemem Windows, ale nie mających do tej pory styczności z tematyką baz danych. "Po prostu Access 2003 PL" to ograniczona do niezbędnego minimum dawka teorii i mnóstwo praktycznych wskazówek, dzięki którym wykonasz swoją pracę szybko i bez kłopotów.
Standard Template Library to jedno z najpotężniejszych narzędzi programistycznych charakteryzujące się złożonością i wysokim stopniem komplikacji. W książce "STL w praktyce. 50 sposobów efektywnego wykorzystania" -- przeznaczonej dla zaawansowanych i średnio zaawansowanych programistów C++ -- znany ekspert Scott Meyers prezentuje najważniejsze techniki stosowania tego narzędzia. Poza listą zaleceń, jak postępować należy, a jak postępować się nie powinno, Meyers przedstawia wiele poważniejszych aspektów STL pozwalających zrozumieć, dlaczego pewne rozwiązania są poprawne, a innych należy unikać. Do każdej wskazówki dołączony jest kod źródłowy i dokładne objaśnienia, które powinny zainteresować zaawansowanych programistów.
Jeżeli Twoja wiedza ogranicza się do informacji dostępnych w dokumentacji STL, ta książka uzupełni ją o bezcenne wskazówki, które pozwolą Ci wykorzystać STL w praktyce.
Książka przedstawia:
* Podstawowe informacje o bibliotece STL i jej zgodności z innymi standardami
* Wskazówki dotyczące poprawnego doboru i używania pojemników
* Opis pojemników typu vector i string
* Omówienie pojemników asocjatywnych
* Metody właściwego korzystania z iteratorów
* Algorytmy wchodzące w skład STL
* Funktory, klasy-funktory i funkcje
* Programowanie za pomocą biblioteki STL
Książkę uzupełniają dodatki, w których znajdziesz między innymi obszerną bibliografię na temat STL oraz cenne wskazówki dla programistów używających kompilatorów firmy Microsoft.
"STL w praktyce. 50 sposobów efektywnego wykorzystania" to nieocenione źródło wiedzy na temat jednego z najważniejszych aspektów programowania w C++. Jeżeli chcesz w praktyce wykorzystać STL, nie obędziesz się bez informacji zawartych w tej książce.
Język C++ to najpopularniejszy obecnie język programowania. Jego podstawowe zalety -- przejrzysta składnia, niewielka ilość słów kluczowych i szeroki wachlarz możliwości -- przysporzyły mu wielu zwolenników. Na rynku dostępnych jest wiele książek o programowaniu w C++, jednak większość z nich zawiera sposoby rozwiązywania konkretnych problemów i zadań programistycznych. Niewiele książek koncentruje się na założeniach, na których opiera się programowanie w języku C++.
W książce "Język C++. Koncepcje i techniki programowania" autorzy skoncentrowali się na kluczowych technikach programowania w C++. Jednak nie przedstawiają ich w formie odpowiedzi na pytania "jak to zrobić", ale "dlaczego robimy to tak, a nie inaczej". Opisują szeroki wachlarz idei i technik programowania w C++ począwszy od szczegółowych przykładów kodu, a skończywszy na zasadach i filozofii projektowania.
* Tworzenie klas
* Uchwyty klas
* Zasady projektowania obiektowego
* Szablony i iteratory
* Stosowanie bibliotek
* Projektowanie bibliotek
* Techniki programowania
Dzięki tej książce nauczysz się nie tylko przestrzegać reguł języka C++, ale także myśleć w tym języku podczas pracy nad programem.
O autorach:
Andrew Koenig jest członkiem działu badającego systemy oprogramowania w Shannon Laboratory firmy AT&T oraz redaktorem projektu komitetów standaryzacyjnych języka C++. [więcej...]
Barbara Moo jest konsultantką z dwudziestoletnim doświadczeniem programistycznym, zarządzała projektem pierwszego kompilatora C++. [więcej...]
Windows Movie Maker dołączany do systemu Windows XP to doskonałe narzędzie do domowego montażu cyfrowych filmów wideo. Jest prosty w obsłudze, posiada spore możliwości, a montaż filmów za jego pomocą jest przyjemną zabawą. Movie Maker pozwala na przeniesienie klipów z kamery cyfrowej, zaimportowanie materiałów z dysku, rozmieszczenie ujęć i połączenie ich przejściami, a także udźwiękowienie i dodanie efektów specjalnych. Gotowy film można wysłać pocztą elektroniczną, zapisać na dysku lub płycie CD albo opublikować w internecie.
Książka "Tworzenie filmów w Windows XP. Projekty" przedstawia proces tworzenia filmu wideo. Opisuje kolejne kroki prowadzące do zmontowania cyfrowego filmu wideo z przechwyconych ujęć i zaimportowanych materiałów. Nie znajdziesz w niej jednak długich opisów i dziesiątek parametrów. Każde zagadnienie jest przedstawione za pomocą zrzutów ekranu i krótkich instrukcji. Dzięki temu w ciągu kilku godzin zrealizujesz swój pierwszy projekt w Movie Makerze.
* Elementy interfejsu użytkownika
* Przechwytywanie klipów z kamery wideo
* Import materiałów źródłowych
* Tworzenie wstępnego montażu
* Dodawanie przejść i efektów specjalnych
* Nakładanie plansz tytułowych i napisów
* Udźwiękowienie filmu
* Korzystanie z funkcji Autofilm
* Eksport zmontowanego filmu
Przekonaj się, jak proste może być tworzenie własnych filmów wideo.
Przedstaw się światu!
* Jak zbudować elegancką stronę z blogiem?
* Jak tworzyć wyspecjalizowane przeglądarki bloga?
* Jak dodawać do własnego serwisu blogowego kanał RSS?
Prowadzenie bloga to nowy sposób na zwiększenie aktywności społecznej - szansa na zaistnienie w rzeczywistości wirtualnej, mająca swoje odbicie w tak zwanym „prawdziwym życiu”. Dlatego blogi piszą dziś niemal wszyscy: politycy, marketingowcy, celebryci, biznesmeni. Forma publicznie dostępnego pamiętnika pozwala na szeroką prezentację własnych poglądów, przekonań czy wartości. Z tego powodu blogi wykorzystywane są też jako wortale poświęcone określonej tematyce, promujące idee lub produkty. Ich użytkownicy stworzyli nawet własną społeczność, która 31 sierpnia obchodzi swoje święto - Dzień Bloga. Już dziś możesz do nich dołączyć!
„Blog, więcej niż internetowy pamiętnik” to książka, która pokaże Ci, jak założyć i prowadzić własny blog, a także aktywnie korzystać z innych blogów. Dowiesz się z niej, jak skorzystać z oprogramowania obsługującego serwisy blogowe, jak zintegrować języki PHP, HTML, CSS i SQL, aby stworzyć elegancką stronę prezentującą Twój blog. Nauczysz się budować własną bazę danych, przeznaczoną do przechowywania wpisów, a także zabezpieczać ją przed niepowołanymi modyfikacjami. I wreszcie poznasz sposób na dodanie do własnego serwisu kanału RSS, aby czytelnicy na bieżąco mogli obserwować pojawianie się nowych wpisów. Znajdziesz tu wszystko, czego potrzebujesz, aby zaprezentować światu swój blog!
* Obsługa okna tworzenia bloga
* Modyfikowanie wyglądu bloga
* Publikowanie w określonym terminie
* Rozbudowa bloga
* Instalacja czytnika RSS
* Subskrybowanie blogów za pomocą RSS
* Instalacja oprogramowania własnego serwera
* Baza danych i modyfikacja danych
* Projektowanie struktury bloga
* Zakładanie konta użytkownika
* Zakładanie bazy danych i tabeli danych
* Nadawanie uprawnień do korzystania z tabeli
* Przygotowanie szablonu i tworzenie strony www
* Automatyzowanie, blokowanie i trwałe usuwanie wpisu
* Tworzenie formularza wyszukiwania
* Tworzenie kanału RSS i wypełnianie go treścią
* Pobieranie programu Weber
Blog to prosty i fascynujący sposób, aby świat dowiedział się o Twoim istnieniu!
Pakiet biurowy MS Office jest jednym z podstawowych narzędzi wykorzystywanych we współczesnych firmach. Zawarty w nim system zarządzania bazami danych Access to wygodna w obsłudze aplikacja służąca do operowania na zbiorach danych. Dzięki prostocie obsługi, sporym możliwościom i wizualnym narzędziom stanowi doskonałe rozwiązanie dla przedsiębiorstw, w których duże znaczenie ma czas poświęcany na opanowanie nowych programów. Kreatory i rozbudowany system pomocy oferowane przez Accessa niezwykle upraszczają proces tworzenia bazy oraz aplikacji przeznaczonych do obsługi zgromadzonych w niej danych.
W książce "Access w biurze i nie tylko" znajdziesz omówienie podstawowych możliwości tego systemu. Nauczysz się tworzyć i otwierać istniejące bazy danych oraz tworzyć nowe. Dowiesz się, w jaki sposób projektować tabele i jak dobierać typy danych dla poszczególnych kolumn tabeli. Przeczytasz o relacjach, poznasz sposoby wybierania i wstawiania danych, a także manipulowania nimi za pomocą kwerend. W kolejnych rozdziałach znajdziesz informacje o tworzeniu formularzy i raportów oraz wyświetlaniu wykresów na podstawie danych zgromadzonych w bazie. Nauczysz się także pisać własne makra i poznasz podstawy języka Visual Basic for Applications.
* Otwieranie istniejących baz danych
* Tworzenie tabel
* Typy danych
* Tworzenie i modyfikowanie relacji
* Manipulowanie danymi za pomocą kwerend
* Konstruowanie formularzy
* Budowanie raportów
* Automatyzacja pracy za pomocą makropoleceń
* Tworzenie i wyświetlanie wykresów
Dane to dziś najcenniejszy towar. Naucz się nim zarządzać.
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
Zapewnij swojej witrynie miejsce w pierwszej dziesiątce!
* Jak działają wyszukiwarki?
* Jaki wpływ na pozycję serwisu mają linki przychodzące i wychodzące?
* Czy istnieją zagrożenia związane z niewłaściwym pozycjonowaniem?
Stworzenie serwisu WWW to dopiero połowa sukcesu w Internecie. Druga połowa to zapewnienie witrynie odpowiedniej popularności. A tę popularność może zagwarantować przede wszystkim wysokie miejsce w wynikach wyszukiwarek. Jak to osiągnąć? Od czego zacząć i jak monitorować skuteczność prowadzonych działań? Wszystkie odpowiedzi znajdziesz właśnie w tej książce!
Poprzez liczne przykłady i ćwiczenia autorzy zapoznają Cię ze sposobem działania wyszukiwarki Google i zasadami doboru właściwych słów kluczowych. Pokażą, jak najlepiej rozmieścić je na stronie. Ponadto dowiesz się, jaki wpływ na pozycję strony mają linki wychodzące oraz przychodzące, jak przebiega proces indeksowania strony, jak działają systemy wymiany linków oraz jak wykorzystać statystyki do obserwacji ruchu na stronie. Przeczytasz także o tym, jakie zagrożenia niesie ze sobą niewłaściwa procedura pozycjonowania.
* Sposób działania Google oraz innych wyszukiwarek
* Definiowanie fraz i słów kluczowych
* Wpływ linków przychodzących i wychodzących na pozycję strony
* Korzystanie z systemów wymiany linków
* Proces indeksacji witryny
* Zagrożenia związane z niewłaściwym pozycjonowaniem
* Wykorzystanie statystyk do śledzenia ruchu na stronie
* Sposoby reklamowania serwisu
Zwiększ oglądalność swojej witryny WWW!
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
Lustereczko, powiedz przecie,
kto jest najwspanialszy w necie?
* Tworzenie i wykorzystywanie odpowiedniego wizerunku oraz zarabianie na nim
* Budowanie pożądanych marek bez wielkich nakładów finansowych
* Interaktywne relacje z klientami
* Wykorzystanie Internetu do rozwoju biznesu
* Narzędzia kreowania wizerunku w sieci
Jak Cię widzą (w sieci), tak Cię piszą
Internet jest nie tylko rewolucyjnym medium, pierwszym o naprawdę masowym zasięgu działania. Stanowi on przede wszystkim fascynujący alternatywny świat. Działa jak magnes, co roku przyciągając nowych użytkowników. Niczym używka, wciąż odnotowuje wydłużenie czasu kontaktu z odbiorcą. I last but not least — Internet to niekończący się pasaż handlowy, wymarzone miejsce spotkań podaży i popytu.
Poznaj specyfikę światowej sieci WWW i znajdź w niej właściwe miejsce dla Twojej marki. E-marketing rządzi się własnymi prawami — z jednej strony bezustannie stawia firmy przed nowymi wyzwaniami, z drugiej zaś stale kreuje nowe narzędzia dotarcia do klienta. A są one naprawdę fascynujące: możliwość dowolnej personalizacji przekazu, olbrzymia ilość kanałów, a przede wszystkim atrakcyjne społeczności — ludzie młodzi, aktywni, hobbyści, biznesmeni oraz entuzjaści nowinek. Mogą oni zostać ambasadorami Twojej marki, ale mogą też ją zniszczyć. Dlatego musisz poznać zasady rządzące Internetem i jego społecznościami, a następnie zacząć budować instrumenty wywierania wpływu i wykorzystać je dla dobra Twojego produktu.
Internet ma przyszłość!
* Czym jest e-wizerunek i jak wpływa na sukces firm, produktów i ludzi?
* Narzędzia budowania image’u — strona WWW, fora internetowe, newslettery i inne.
* Sześć zasad skutecznego kreowania e-wizerunku.
* Grzechy główne działań internetowych.
* Marka jako efekt przemyślanej strategii wizerunkowej.
* Case studies
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
Rozpocznij przygodę z Visual C++!
* Jakie prawa rządzą programowaniem obiektowym?
* Jak tworzyć usługi systemowe?
* Jak dokumentować tworzony kod?
Microsoft Visual C++ jest zintegrowanym środowiskiem, pozwalającym na tworzenie aplikacji przy użyciu języków C, C++ lub C++/CLI. Zawiera ono wyspecjalizowane narzędzia, pomagające w wydajnym tworzeniu rozwiązań opartych o te języki. Pierwsza wersja Visual C++ została wydana w 1992 roku, a środowisko to jest bezustannie ulepszane. Najnowsze wydanie, z datą 2008, zostało opublikowane w listopadzie 2007 roku i wprowadziło wiele nowości — jak chociażby wsparcie dla technologii .NET 3.5. Niewątpliwie narzędzie firmowane przez giganta z Redmond jest jednym z najpopularniejszych, a używają go programiści z całego świata.
Dzięki tej książce również Ty możesz dołączyć do tego wybitnego grona. Po jej przeczytaniu będziesz miał wiedzę na temat środowiska programistycznego i platformy .NET. Poznasz podstawy programowania obiektowego, nauczysz się uzyskiwać dostęp do informacji zgromadzonych w bazach danych oraz korzystać z możliwości Internetu bezpośrednio w Twoich programach. Kolejne rozdziały przedstawiają interesujące tematy dotyczące obsługi wyjątków, programów wielowątkowych oraz sposobów tworzenia usług systemowych. Ostatni rozdział poświęcony został tak istotnej kwestii, jak dokumentowanie kodu — to czynność, o której wielu programistów zapomina. Jeżeli chcesz rozpocząć przygodę z Microsoft Visual C++, ta książka jest idealną lekturą dla Ciebie!
* Praca w zintegrowanym środowisku programistycznym
* Pojęcia związane z programowaniem obiektowym
* Uzyskiwanie dostępu do informacji zgromadzonych w bazach danych
* Wykorzystanie transakcji w pracy z danymi
* Sposoby integracji z siecią Internet
* Obsługa wyjątków
* Programowanie wielowątkowe
* Tworzenie grafiki oraz wykorzystanie multimediów
* Drukowanie w systemie Windows
* Tworzenie usług systemowych
* Dokumentowanie kodu programu
Wykorzystaj możliwości Microsoft Visual C++ 2008!
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
Poznaj możliwości iPhone’a!
* Jak rozpocząć pracę z iPhone’em?
* Jak wykorzystać możliwości przeglądarki Safari?
* Jak używać map?
Pojawienie się iPhone’a firmy Apple można bez wahania nazwać Rewolucją! Rewolucją przez duże "R". Nigdy wcześniej żaden nowy telefon nie wzbudził takich emocji. Nigdy wcześniej nie ustawiały się na wiele dni przed premierą kolejki pod salonami. Co sprawia, że ludzie szaleją za tym małym cudem techniki? Wielodotykowy (ang. multitouch) ekran, dostęp do tysięcy aplikacji, stabilny system operacyjny oraz elegancki, przykuwający uwagę wygląd to tylko niektóre z jego zalet.
Właśnie dzięki tej książce dowiesz się, co tak naprawdę potrafi Twój iPhone. Autor — niezawodny Scott Kelby — bez zbędnego zagłębiania się w szczegóły techniczne opowie Ci o możliwościach tego rewolucyjnego urządzenia. Zaprezentuje Ci m.in. sposoby wykonywania różnych operacji przy użyciu tego telefonu. Poznasz tajniki jego konfiguracji i synchronizacji z komputerem oraz metodę sprawdzania poziomu naładowania baterii. Nauczysz się wykorzystywać wszystkie możliwości przeglądarki Safari, czytnika poczty oraz terminarza. Dowiesz się również, jak odtwarzać klipy z YouTube, słuchać muzyki czy oglądać filmy. Książka ta jest zatem świetną pozycją zarówno dla początkującego użytkownika telefonu iPhone, jak również dla zaawansowanego — ten ostatni znajdzie tu informacje, które go zaskoczą i zachwycą! W końcu iPhone to zdolna i piękna bestia…
* Włączanie, usypianie, wyłączanie iPhone’a
* Wykorzystanie wbudowanego głośnika
* Obsługa ekranu
* Importowanie kontaktów
* Dodawanie numerów
* Połączenia konferencyjne
* Wyciszanie dzwonka
* Odbieranie i wysyłanie wiadomości e-mail
* Obsługa przeglądarki Safari
* Wykorzystanie kalendarza
* Odtwarzanie klipów z YouTube
* Używanie mapy
* Sprawdzanie prognozy pogody
* Importowanie i odtwarzanie muzyki
* Wykonywanie zdjęć
* Rozwiązywanie typowych problemów
Sprawdź, co potrafi Twój iPhone!
Uwiecznij świat, jakiego nie znałeś!
* Jaki sprzęt jest potrzebny do makrofotografii?
* Jak uzyskać duże powiększenia?
* Jak komponować efektowne zdjęcia?
Wiele osób nie zwraca uwagi na niepozorne, małe elementy otaczającego nas świata. Czyż nie warto pokazać im, co tracą? Wykonanie dobrego zdjęcia w skali makro to wyzwanie, ale zachwyt na twarzach oglądających jest wart wszelkich poświęceń. Właśnie dzięki makrofotografii można ujrzeć cudowny świat, niezauważalny na co dzień. Magiczny świat szczegółów!
Autor książki "Makrofotografia. Magia szczegółu " przedstawia ten temat w sposób przejrzysty i systematyczny. Dzięki tej publikacji zdobędziesz informacje dotyczące sprzętu potrzebnego do wykonania makrofotografii oraz sposobu kompozycji zdjęcia. Poznasz zagadnienia związane z właściwym doborem ostrości, a także takie pojęcia, jak głębia ostrości, długość ogniskowej, jasność obiektywu i wiele innych. Pozwolą Ci one na swobodne poruszanie się po świecie makrofotografii. Ponadto poszerzysz swoją wiedzę odnośnie doboru właściwego oświetlenia oraz programów odpowiednich do obróbki wykonanych zdjęć. Niewątpliwym atutem tej książki są pytania i zadania kontrolne, które pozwolą Ci zweryfikować zdobyte umiejętności. Jeżeli chcesz uwiecznić otoczenie w makrofotografii, ta pozycja będzie dla Ciebie nieocenionym źródłem informacji, a może nawet twórczej inspiracji!
* Sprzęt konieczny do wykonania makrofotografii
* Sposoby na uzyskanie dużych powiększeń
* Komponowanie zdjęć
* Zasady doboru kadru
* Uzyskiwanie właściwej ostrości
* Ograniczenia ostrości
* Dobór właściwego oświetlenia
* Metody pomiaru światła
* Doświetlanie zdjęć
* Narzędzia do edycji zdjęć
Odsłoń na fotografiach całe piękno szczegółu!
Naucz się korzystać z nowoczesnych narzędzi PowerShella
i usprawniaj żmudne zadania administracyjne!
* Jak skonfigurować środowisko PowerShella?
* Jak tworzyć aplety poleceń i jak ich używać?
* Jak korzystać z potoku danych?
Windows PowerShell to innowacyjne narzędzie do zarządzania systemem i przetwarzania skryptów dla serwerów oraz klientów pod kontrolą Windows. Charakterystyczną cechą tego interpretera poleceń jest obiektowa logika, która sprawia, że wynikiem każdego polecenia jest obiekt określonego typu. Dodatkowo wszystkie funkcje dostępne przez API systemu są możliwe do wywołania z poziomu PowerShella. Dzięki swojej uniwersalności oraz nowoczesnym narzędziom interpreter ten zapewnia spójny oraz jasny mechanizm zarządzania, oparty na wierszu poleceń i niewymagający od użytkownika dużej wiedzy programistycznej.
Książka "Windows PowerShell. Podstawy" zawiera dokładny opis innowacyjnej architektury PowerShella, zasad pisania skryptów oraz możliwości korzystania z podstawowych interfejsów systemowych: COM, WMI, ADSI i ADO.NET, a także obszerny zbiór opisów rozwiązań konkretnych zadań administracyjnych. Korzystając z tego przewodnika, poznasz funkcje i narzędzia PowerShella. Nauczysz się również korzystać z obiektowego potoku danych i zarządzać procesami, dziennikami zdarzeń oraz wpisami rejestru. Dzięki zawartej tu wiedzy z pewnością usprawnisz i zautomatyzujesz wszelkie czasochłonne zadania administracyjne, by móc swobodnie stosować PowerShell jako podstawową konsolę do codziennej pracy.
* Aplety poleceń
* Przetwarzanie potokowe
* Potoki danych
* Uniwersalny model nawigacji
* Definiowanie dysków
* Język skryptów PowerShella
* Tablice asocjacyjne
* Praca ze skryptami
* Różnicowanie reakcji na błędy
* Biblioteki klas
* Narzędzia PowerShella
* Zarządzanie użytkownikami i grupami w Active Directory
* Bazy danych
* Zaawansowane operacje dostępu do danych
PowerShell skróci czas Twojej pracy!
Poznaj specyfikę języka Java i zostań mistrzem programowania
* Jak korzystać z bibliotek języka Java?
* Jak pisać funkcjonalny i klarowny kod?
* Jak stworzyć profesjonalny i efektowny program?
Język Java jest językiem obiektowym z dziedziczeniem jednobazowym. Wewnątrz każdej metody korzysta on ze zorientowanego na instrukcje stylu kodowania. Aby dobrze poznać jakikolwiek język, należy nauczyć się posługiwać jego regułami, zasadami i składnią — podobnie jest z językiem programowania. Jeśli chcesz zyskać możliwość efektywnego programowania w języku Java, powinieneś poznać struktury danych, operacje i udogodnienia, oferowane przez biblioteki standardowe, a także często stosowane i efektywne sposoby tworzenia kodu. Całą potrzebną Ci wiedzę znajdziesz właśnie w tym podręczniku.
W książce „Java. Efektywne programowanie” w sposób zrozumiały i klarowny przedstawiono zasady opisujące mechanizmy używane w najlepszych technikach programowania. Ten podręcznik podpowie Ci, jak najbardziej racjonalnie korzystać z języka Java oraz jego podstawowych bibliotek. Dowiesz się, jak stosować wyjątki przechwytywalne i wyjątki czasu wykonania, poznasz także zalety stosowania statycznych klas składowych. Opanujesz metody sprawdzania poprawności parametrów i projektowania sygnatur oraz wszelkie instrukcje, które pozwolą Ci na wydajne i profesjonalne programowanie.
* Tworzenie i usuwanie obiektów
* Klasy i interfejsy
* Zapewnianie niezmienności obiektu
* Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
* Zalety stosowania statycznych klas składowych
* Typy ogólne
* Typy wyliczeniowe i adnotacje
* Metody
* Programowanie
* Wykorzystanie ogólnie przyjętych konwencji nazewnictwa
* Wyjątki
* Współbieżność i serializacja
* Dokumentowanie bezpieczeństwa dla wątków
Nie wystarczy samo poznanie języka Java. Trzeba wiedzieć, jak z niego efektywnie korzystać!
Rozpocznij swoją przygodę z JavaScript!
* Jak rozpocząć przygodę z JavaScript?
* Jakie obiekty dostarcza JavaScript?
* Jak reagować na błędy?
Język JavaScript, choć ma już blisko dwanaście lat, swoimi możliwościami wciąż potrafi zafascynować niejednego projektanta stron internetowych. Ma już za sobą gorsze dni, jednak aktualnie dzięki technologii AJAX znów jest na topie. Wykorzystując go w odpowiedni sposób, sprawisz, że twój serwis WWW stanie się bardziej interaktywny i dynamiczny.
Ta książka pozwoli Ci wyjść zwycięsko z pierwszego starcia z tym językiem! Dowiesz się z niej, jak używać zmiennych, operatorów oraz funkcji. Nauczysz się reagować na zdarzenia oraz wykorzystywać okna dialogowe. Ponadto zdobędziesz wiedzę na temat pracy z obiektami DOM HTML oraz na temat sposobów reagowania na błędy w skryptach. Autor przedstawia tu także dostępne obiekty JavaScript oraz pokazuje, jak wykonywać operacje związane z czasem. Ogromnym atutem tej książki jest przejrzystość i usystematyzowany sposób prezentowania informacji. Dzięki temu również Ty szybko i bezboleśnie poznasz JavaScript!
* Typowe konstrukcje języka JavaScript
* Wykorzystanie zmiennych
* Zastosowanie funkcji
* Reagowanie na zdarzenia
* Sposoby użycia okien dialogowych
* Wykonywanie operacji związanych z czasem
* Dostępne obiekty JavaScript
* Obiekty DOM HTML
* Przygotowanie własnych obiektów
* Dziedziczenie w JavaScript
* Obsługa błędów
Przejdź bezboleśnie pierwsze starcie z JavaScript!
Naucz się łączyć największe zalety języków oraz technik programowania
i twórz interaktywne strony internetowe
* Jak unikać typowych błędów i sprawnie rozwiązywać problemy programistyczne?
* Jak połączyć zalety HTML, XML i PHP dla uzyskania pożądanych efektów?
* Jak tworzyć aplikacje wyposażone w aktywny interfejs użytkownika?
Statyczne strony WWW to dziś już przeszłość. Powszechnie dostępne narzędzia dają programistom prawie nieograniczone możliwości w zakresie tworzenia interaktywnych witryn internetowych, wzbogaconych o najróżniejsze efekty wizualne, animacje oraz wbudowane narzędzia pomocnicze. Największą popularność zdobyły sobie narzędzia z kategorii open source — z powodu ich minimalnego kosztu oraz niezwykle dużych zasobów, dostępnych za pośrednictwem Internetu. Z tej książki dowiesz się, jak tworzyć bogate i interaktywne strony WWW, łącząc rozmaite techniki i korzystając z różnych języków.
Książka "Ajax, JavaScript i PHP. Intensywny trening" poprowadzi Cię krok po kroku po podstawowych zasadach programowania w językach JavaScript, PHP i HTML oraz technologiach programowania. Dzięki temu podręcznikowi dowiesz się m.in., jak wykorzystywać dostępne biblioteki ajaksowe do implementowania i ulepszania podstawowych mechanizmów aplikacji. Szybko nauczysz się tworzyć interaktywne strony WWW, zarówno za pomocą technologii serwerowych, jak i technik oraz narzędzi umiejscowionych po stronie klienckiej, a także ich kombinacji.
* Tworzenie stron WWW w języku HTML
* Stylizacja stron za pomocą arkuszy CSS
* Tworzenie skryptów w języku JavaScript
* Wbudowanie skryptu w stronę WWW
* Obiektowy model dokumentu (DOM)
* Obiekty String
* Instrukcje warunkowe i pętle
* Funkcje wbudowane i biblioteki
* Konstruowanie aplikacji ajaksowych
* Zmienne w języku PHP
* Funkcje liczbowe, łańcuchy i tabele
* Kontrola przepływu sterowania
* Usługi webowe oraz protokoły REST i SOAP
Łącz, kompiluj, dobieraj — niech Twoje strony WWW zrobią wrażenie!
Poznaj narzędzia programu PowerPoint i twórz wyjątkowe prezentacje!
* Jak stworzyć profesjonalną prezentację na każdą okazję?
* Jak modyfikować grafikę SmartArt?
* Jak korzystać z programu Clip Organizer i biblioteki slajdów?
Z pewnością wiesz, do czego służy program PowerPoint, lecz jeśli jeszcze nie potrafisz z niego korzystać, a musisz szybko przygotować profesjonalną prezentację, ta książka jest właśnie dla Ciebie! Znajdziesz tu opis ostatniej wersji programu — PowerPoint 2007. Umożliwia ona stworzenie zaawansowanej i bogatej prezentacji, wyposażonej w dźwięk, fotografie i animacje filmowe. Nowy PowerPoint pozwala także na bezpieczne udostępnianie Twojej prezentacji wszystkim zainteresowanym.
Książka "PowerPoint 2007 PL. Seria praktyk" to bogato ilustrowany, a przy tym prawdziwie intuicyjny podręcznik, dzięki któremu każdy nauczy się sprawnie korzystać z tej aplikacji. Kolor i zrzuty ekranowe ilustrujące kolejne informacje, jak również klarowne i zrozumiałe instrukcje sprawiają, że nauka staje się niezwykle prosta. Dzięki tej książce poznasz wszystkie niezbędne narzędzia PowerPointa i ciekawe funkcje tego programu. Dowiesz się, jak zastosować w swojej prezentacji grafiki SmartArt oraz zaawansowane układy slajdów, a także w jaki sposób korzystać z galerii stylów czy biblioteki slajdów.
* Tworzenie prezentacji
* Praca z tekstem
* Grafika i linie
* Konwersja na grafikę SmartArt
* Tabele i wykresy
* Używanie Excela 2007 — kopiowanie i wstawianie tabel
* Wzbogacanie prezentacji — animacje
* Multimedia
* Dodawanie filmów i dźwięku
* Tworzenie albumów
* Pokaz slajdów
* Nagrywanie narracji
* Udostępnianie prezentacji
* Bezpieczeństwo
PowerPoint jest dla każdego!
Poznaj narzędzia oraz funkcje Excela i z łatwością wykorzystuj tę wiedzę w pracy
* Jak tworzyć skoroszyty i wykresy?
* Jak zarządzać danymi w arkuszach?
* Jak szacować formuły?
Na samo brzmienie słowa "Excel" reagujesz paniką? Uważasz, że to bardzo skomplikowany i trudny w obsłudze program? Świetnie! Ta książka została napisana właśnie z myślą o Tobie! Podręcznik, który trzymasz w rękach, stanowi namacalny dowód na to, że Excel 2007 może być prosty, a nauka jego obsługi bardzo przyjemna! Choć trudno Ci w tej chwili w to uwierzyć, aplikacja ta oferuje cale spektrum nowoczesnych, a przy tym przyjaznych i intuicyjnych narzędzi oraz funkcji, dzięki którym znacznie usprawnisz i przyspieszysz swoją pracę. Naprawdę warto je poznać!
Książkę "Excel 2007 PL. Seria praktyk" przygotowano w taki sposób, aby każdy mógł nauczyć się korzystać z narzędzi Excela, tworzyć odpowiednie arkusze oraz wykonywać na nich praktyczne operacje. Wszystkie porady i instrukcje napisane zostały prostym, zrozumiałym językiem. Dzięki temu szybko opanujesz sposoby zarządzania danymi czy szacowania formuł w tym programie. Wszystkie omawiane zagadnienia zilustrowane są ułatwiającymi zrozumienie zrzutami ekranowymi, a kolorowy druk znacznie uprzyjemni Ci korzystanie z książki. Wystarczy ją przeczytać, a poznasz Excela w stopniu pozwalającym Ci na swobodną pracę w tym programie. Na co zatem czekasz? Przed Tobą nauka takich zagadnień, jak:
* Tworzenie skoroszytu
* Wprowadzanie danych do arkusza i zarządzanie nimi
* Formuły i funkcje
* Tabele i wykresy
* Konwersja tabeli do postaci zakresu
* Zaawansowane funkcje
* Szacowanie formuł
* Zarządzanie Excelem
* Makra
* Szablony i scenariusze
* Łącza i odwołania
* Stosowanie aktualizacji
Najprostszy i najprzyjemniejszy sposób na poznanie Excela!
Poznaj praktyczne możliwości programu Access 2007!
* Jak właściwie zaprojektować bazę danych?
* Jak korzystać z szablonów?
* Jak tworzyć tabele i definiować relacje między nimi?
Wbrew pozorom nie trzeba być specjalistą, żeby korzystać z Accessa! Jest to program wyjątkowo przyjazny dla użytkownika, umożliwiający tworzenie baz danych i zarządzanie nimi bez potrzeby dogłębnego poznawania języka SQL oraz skomplikowanych środowisk serwerowych. Aplikacja pozwala na zapisywanie danych z wykorzystaniem formularzy, kierowanie zapytań do bazy, a także dzielenie danych ze współpracownikami za pośrednictwem sieci komputerowej.
Książka "Access 2007 PL. Seria praktyk" zawiera zwięzły i czytelny opis wszystkich najważniejszych funkcji tego programu, a także konkretne przykłady i jasne instrukcje zastosowania narzędzi Accessa. Kolorowe strony pozwalają na szybkie odnalezienie interesujących Cię zagadnień. Dzięki temu podręcznikowi poznasz podstawowe zasady tworzenia dobrego projektu bazy danych oraz jej zaawansowane możliwości. Nauczysz się tworzyć tabele, formularze i raporty, a także korzystać z kluczy podstawowych i obcych. Bez problemu zbudujesz taką bazę danych, która pozwoli Ci sprawnie zarządzać informacjami.
* Personalizacja Accessa 2007
* Projektowanie baz danych
* Relacyjne bazy danych
* Klucze podstawowe i obce
* Tworzenie tabel
* Korzystanie z typów danych
* Definiowanie relacji
* Kwerendy
* Korzystanie z SQL
* Tworzenie i dostrajanie formularzy
* Tworzenie raportów
* Współdzielenie Accessa
Naucz się korzystać z Accessa — zachwycą Cię jego możliwości!
Odkryj bogactwo funkcji Worda!
Jak poprawnie formatować i uatrakcyjniać dokumenty?
Chcesz zacząć sprawnie tworzyć w programie Word dokumenty o profesjonalnym wyglądzie? A może tak dobrze go już znasz, że wątpisz, by skrywał przed Tobą jeszcze jakiekolwiek tajemnice? Tak czy inaczej warto opanować wszystkie potężne możliwości najpopularniejszego edytora tekstów, różne sposoby pracy z nim i metody tworzenia dokumentów tekstowych. Uzbrojony w taką wiedzę, z pewnością będziesz pracował szybciej i sprawniej.
Książka "Word 2007 PL. Seria praktyk" jest graficznym przewodnikiem po najnowszej wersji Worda i zawiera dokładny opis jego funkcji podstawowych oraz zaawansowanych — począwszy od tworzenia i formatowania tekstów, a na złożonych makrach skończywszy. Wszystko to przedstawione zostało za pomocą przejrzystych, kolorowych i szczegółowych instrukcji oraz praktycznych przykładów. Dzięki temu podręcznikowi poznasz całe spektrum narzędzi Worda i udoskonalisz swoją pracę z tym programem.
* Narzędzia główne
* Formatowanie tekstu
* Szybkie style
* Praca z dokumentem
* Drukowanie i publikowanie
* Konwersja do formatu PDF
* Biblioteka ClipArt i SmartArt
* Hiperłącza i zakładki
* Równania
* Zaawansowane funkcje — podpis cyfrowy
* Makra
Opanuj wszystkie narzędzia Worda i ciesz się swobodą tworzenia dokumentów!
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
Dołącz do kreatorów nowych trendów! Stwórz własny serwis społecznościowy!
* Pierwsze kroki w roli twórcy serwisu — rodzaje stron, prawo i reklama
* Skrypty, instalacja i administracja — PHPizabi, Elgg, Dolphin, Joomla!
* ABC moderatora i użytkownika — regulamin, trolle, zakres ingerencji
Serwisy społecznościowe są bodaj najszybciej rozwijającą się dziś częścią internetu. Nie sposób przecenić ich roli społecznej i opiniotwórczej. Liczba użytkowników i ich poczucie wspólnoty decydują o sile i prężności tych serwisów. W każdej chwili możesz przyłączyć się do któregoś z nich. Jednak znacznie więcej radości sprawiłoby Ci na pewno prowadzenie własnego serwisu, wokół którego skupiałaby się cała społeczność osób o zainteresowaniach podobnych do Twoich.
W książce "Serwisy społecznościowe. Budowa, administracja i moderacja" znajdziesz wszelkie informacje dotyczące tworzenia i obsługi serwisu społecznościowego. Opisano w niej początki tego zjawiska społecznego, podstawy jego działania, rozmaite odmiany serwisów, wszelkie kwestie prawne i techniczne. Niezależnie od tego, czy szukasz inspiracji odnośnie treści umieszczanych w serwisie, czy chciałbyś dowiedzieć się, jak rozwiązać konkretne problemy z konfiguracją, rejestracją, wyborem mechanizmu działania czy wyglądu Twojego serwisu, autorzy służą Ci rzetelną wiedzą, wskazówkami i podpowiedziami. Oprócz tego wprowadzą Cię w kwestie związane z bezpieczeństwem w sieci, rolą moderatora i rozwiązywaniem problemów z użytkownikami.
* Społeczności internetowe
* Serwisy społecznościowe (historia, rodzaje, reklama)
* Regulacje prawne
* Wybór domeny i hostingu
* Niezbędne narzędzia (klient FTP, edytory CSS i tekstowe)
* Serwis społecznościowy a forum dyskusyjne
* Bezpieczeństwo serwisu
* Skrypty (PHPizabi, Elgg, Dolphin, Joomla!, BuddyPress, Joovili, SocialEngine i wiele innych)
* Online-Community-Building
* Skrypty do budowy serwisu wideo (ClipBucket Lite, Clipshare, ClipHouse i wiele innych)
* Rola moderatora
* Social shopping
Sprawdź, jak wiele satysfakcji daje własny serwis społecznościowy!
AutoCAD to program do komputerowego wspomagania projektowania, który od lat wyznacza standardy na rynku takich aplikacji. Z jego możliwości korzystają projektanci różnych branż, a ogromna liczba bibliotek, modułów i nakładek sprawia, że realizacja nawet najbardziej złożonych projektów przebiega szybko i sprawnie. Każda kolejna wersja AutoCAD-a jest bardziej rozbudowana. W wersji 2008 autorzy aplikacji zadbali o optymalizację znanych już użytkownikom narzędzi i zwiększenie produktywności pracy. Zmodernizowany interfejs użytkownika oraz nowe możliwości docenią nie tylko profesjonaliści, ale również ci, którzy stawiają pierwsze kroki w świecie komputerowego wspomagania projektowania.
Książka "AutoCAD 2008 i 2008 PL" to wyczerpujące omówienie najnowszej edycji tej aplikacji. Każdy użytkownik AutoCAD-a, niezależnie od stopnia zaawansowania, znajdzie w niej interesujące informacje. Czytając tę książkę, nauczysz się tworzyć i modyfikować rysunki, wymiarować je, korzystać z warstw, bloków i stylów oraz drukować projekty. Poznasz zasady modelowania bryłowego, tworzenia szablonów oraz rysowania w trybie aksonometrycznym. Każde z narzędzi dostępnych w aplikacji jest dokładnie omówione, a ilustrowane przykłady ułatwiają poznanie ich w praktyce.
* Interfejs użytkownika, menu i paski narzędzi
* Praca z dokumentami
* Układy współrzędnych
* Tworzenie podstawowych obiektów i definiowanie ich właściwości
* Napisy i tabelki
* Rysowanie precyzyjne
* Rysunek aksonometryczny
* Kreskowanie
* Naprawianie uszkodzonych rysunków
* Techniki wymiarowania, modyfikowanie wymiarów i style wymiarowe
* Modelowanie 3D i bryły ACIS
Poznaj najnowszą wersję narzędzia, które zrewolucjonizowało pracę projektantów na całym świecie.
Zobacz, jakie to proste — naucz się tworzyć bazy danych!
* Jak tworzyć formularze i raporty?
* Jak modyfikować strukturę tabel?
* Jak stosować mechanizmy wymiany danych?
Współczesny świat wymusza na przedsiębiorstwach gromadzenie oraz przetwarzanie ogromnej ilości informacji. To sprawia, że muszą one dysponować wydajnymi i sprawnymi bazami danych. Aby zbudować taki system zarządzania danymi, niezbędne są odpowiednie narzędzia — jednym z nich jest program MS Access. Ta aplikacja przede wszystkim pozwala na łatwą kontrolę poprawności tworzonych projektów oraz zapewnia integrację narzędzi służących do tworzenia struktury relacyjnej. Dba także o zgodność tych narzędzi ze standardem języka zapytań SQL, wykorzystywanym do tworzenia i modyfikowania baz danych oraz operowania na zgromadzonych w nich informacjach.
Książka „Bazy danych. Pierwsze starcie” stanowi doskonałe wprowadzenie w tematykę tworzenia baz danych. Zawiera wszystkie potrzebne informacje, podane w prosty i przejrzysty sposób. Ten podręcznik przyda się zarówno studentom kierunków informatycznych, jak i wszystkim tym, którzy chcą zdobyć wiedzę o nowoczesnych metodach budowania takich baz. Stąd dowiesz się m.in., jak wykorzystywać język zapytań SQL, w jaki sposób tworzyć tabele, formularze i raporty oraz stosować mechanizmy wymiany danych, a także na czym polega filtrowanie i sortowanie w zapytaniach. Zdobędziesz wiedzę i umiejętności wystarczające do samodzielnego zbudowania wydajnej bazy danych i sprawnego nią zarządzania.
* Projektowanie bazy danych — narzędzia wizualne
* Tworzenie formularzy i raportów
* Strukturalny język zapytań SQL w wersji MS JetSQL
* Składnia podstawowa
* Unia — koniunkcja zbiorów
* Grupowanie i funkcje agregujące
* Zastosowanie języka SQL z poziomu formularzy
* Mechanizmy wymiany danych
* Obiekty: DAO, RDO, ADO
* Zastosowanie mechanizmów wymiany danych przy tworzeniu aplikacji
Stwórz własną, niezawodną bazę danych!
Wkrocz w świat projektowania 3D
* Jak definiować parametry projektu?
* W jaki sposób korzystać z narzędzi projektowych?
* Jak generować dokumentację techniczną?
Inventor, opracowany i sprzedawany przez firmę Autodesk, to program typu CAD, pozwalający na zamodelowanie projektowanego urządzenia lub elementu w postaci bryły trójwymiarowej. W oparciu o tak zamodelowaną bryłę Inventor umożliwia wygenerowanie pełnej dokumentacji projektowej — rysunków wykonawczych i złożeniowych, wykazu części i innych. Aplikacja pozwala także na przeprowadzenie symulacji i analizy działania projektowanego urządzenia.
"Inventor. Pierwsze kroki " to podręcznik dla wszystkich osób, które chcą poznać możliwości tej aplikacji i wykorzystać je w swojej pracy. Książka opisuje proces instalacji i konfiguracji programu oraz definiowania parametrów projektu. Pokazuje także kolejne kroki jego realizacji. Przeczytasz w niej o tworzeniu szkiców, definiowaniu wiązań, generowaniu modeli bryłowych i tworzeniu zespołów. Dowiesz się także, w jaki sposób wygenerować dokumentację techniczną w oparciu o gotowy model oraz jak zaprezentować elementy projektu w postaci animacji trójwymiarowej.
* Instalacja Inventora
* Konfiguracja interfejsu użytkownika
* Praca z oknami dialogowymi
* Tworzenie szkiców i wiązań
* Edycja obiektów graficznych
* Tworzenie brył trójwymiarowych
* Łączenie elementów w zespoły
* Tworzenie dokumentacji technicznej
* Prezentacja zespołów
Zrealizuj swoje wizje za pomocą Inventora!
1. IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI Algorytmy w C
KATALOG KSI¥¯EK Autor: Kyle Loudon
T³umaczenie: Tomasz ¯mijewski
KATALOG ONLINE ISBN: 83-7197-912-6
Tytu³ orygina³u: Mastering Algorithms with C
ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 492
Przyk³ady na ftp: 272 kB
TWÓJ KOSZYK
DODAJ DO KOSZYKA Ksi¹¿ka „Algorytmy w C” jest doskona³¹ pomoc¹ dla programistów, którym
w codziennej pracy potrzebne s¹ sprawdzone rozwi¹zania. Nie ma tu teoretycznych
dywagacji tak charakterystycznych dla wiêkszo ci ksi¹¿ek o strukturach danych
CENNIK I INFORMACJE i algorytmach. Znajdziesz w niej za to przystêpnie podane informacje i praktyczne
techniki programowania.
ZAMÓW INFORMACJE Wyj¹tkowo elegancki styl programowania i pisania autora, Kyle’a Loudona, u³atwia
O NOWO CIACH poznanie najwa¿niejszych struktur danych, takich jak listy, stosy, kolejki, zbiory, sterty,
kolejki priorytetowe i grafy. Autor prezentuje u¿ycie algorytmów sortuj¹cych,
ZAMÓW CENNIK wyszukiwania, analiz numerycznych, kompresji danych, szyfrowania danych, typowych
algorytmów obs³ugi grafów oraz geometrii analitycznej. W rozdzia³ach po wiêconych
kompresji i szyfrowaniu czytelnik znajdzie nie tylko gotowy, szybki w dzia³aniu kod, ale
CZYTELNIA te¿ informacje przydatne dla osób, które nigdy nie mia³y czasu ani chêci zag³êbiaæ siê
w omawiane zagadnienia.
FRAGMENTY KSI¥¯EK ONLINE W tek cie umieszczono tak¿e kody wraz z przyk³adami zastosowania poszczególnych
struktur danych i algorytmów. Komplet kodów ród³owych znajduje siê na p³ycie
CD-ROM. Kod ten zosta³ napisany w taki sposób, by ³atwo móg³ go wykorzystaæ
we w³asnych aplikacjach.
W ksi¹¿ce omówiono:
• Wska niki
• Rekurencjê
• Analizê algorytmów
• Struktury danych (listy, stosy, kolejki, zbiory, tablice asocjacyjne, drzewa, sterty,
kolejki priorytetowe i grafy)
• Sortowanie i wyszukiwanie
Wydawnictwo Helion • Metody numeryczne
ul. Chopina 6 • Kompresjê danych
44-100 Gliwice • Szyfrowanie danych
tel. (32)230-98-63 • Algorytmy operuj¹ce na grafach
e-mail: helion@helion.pl
2. Spis treści
Wstęp .......................................................................................................................................... 9
Część I Zagadnienia podstawowe........................................................................ 15
Rozdział 1. Wprowadzenie ....................................................................................................... 17
Wprowadzenie do struktur danych ............................................................................................... 18
Wprowadzenie do algorytmów ...................................................................................................... 19
Odrobina inżynierii oprogramowania ........................................................................................... 22
Jak tej książki używać ....................................................................................................................... 23
Rozdział 2. Użycie wskaźników ............................................................................................... 25
Podstawowe informacje o wskaźnikach ........................................................................................ 26
Alokacja pamięci................................................................................................................................ 27
Agregaty i arytmetyka wskaźników .............................................................................................. 29
Wskaźniki jako parametry funkcji .................................................................................................. 31
Wskaźniki ogólne i rzutowanie....................................................................................................... 34
Wskaźniki do funkcji ........................................................................................................................ 37
Pytania i odpowiedzi ........................................................................................................................ 38
Tematy pokrewne.............................................................................................................................. 39
Rozdział 3. Rekurencja ............................................................................................................. 41
Podstawy rekurencji.......................................................................................................................... 42
Rekurencja prawostronna ................................................................................................................ 46
Pytania i odpowiedzi ........................................................................................................................ 48
Tematy pokrewne.............................................................................................................................. 50
Rozdział 4. Analiza algorytmów .............................................................................................. 51
Analiza najgorszego przypadku ..................................................................................................... 52
O-notacja ............................................................................................................................................. 53
Złożoność obliczeniowa ................................................................................................................... 55
3. 4 Algorytmy w C
Przykład analizy: sortowanie przez wstawianie .......................................................................... 57
Pytania i odpowiedzi ........................................................................................................................ 59
Tematy pokrewne.............................................................................................................................. 60
Część II Struktury danych .................................................................................. 61
Rozdział 5. Listy powiązane..................................................................................................... 63
Opis list powiązanych....................................................................................................................... 64
Interfejs list powiązanych................................................................................................................. 65
Implementacja list powiązanych i analiza kodu .......................................................................... 68
Przykład użycia list powiązanych: zarządzanie ramkami ......................................................... 75
Opis list podwójnie powiązanych .................................................................................................. 78
Interfejs list podwójnie powiązanych............................................................................................. 79
Implementacja list podwójnie powiązanych i analiza kodu ...................................................... 81
Opis list cyklicznych ......................................................................................................................... 90
Interfejs list cyklicznych ................................................................................................................... 91
Implementacja list cyklicznych i analiza kodu ............................................................................. 93
Przykład użycia list cyklicznych: zamiana stron.......................................................................... 98
Pytania i odpowiedzi ...................................................................................................................... 101
Tematy pokrewne............................................................................................................................ 103
Rozdział 6. Stosy i kolejki ...................................................................................................... 105
Opis stosów ...................................................................................................................................... 106
Interfejs stosu ................................................................................................................................... 107
Implementacja stosu i analiza kodu ............................................................................................. 108
Opis kolejek ...................................................................................................................................... 111
Interfejs kolejek ................................................................................................................................ 111
Implementacja kolejki i analiza kodu........................................................................................... 113
Przykład użycia kolejek: obsługa zdarzeń .................................................................................. 116
Pytania i odpowiedzi ...................................................................................................................... 118
Tematy pokrewne............................................................................................................................ 119
Rozdział 7. Zbiory .................................................................................................................. 121
Opis zbiorów .................................................................................................................................... 122
Interfejs zbiorów .............................................................................................................................. 124
Implementacja zbioru i analiza kodu ........................................................................................... 127
Przykład użycia zbiorów: pokrycie .............................................................................................. 137
Pytania i odpowiedzi ...................................................................................................................... 141
Tematy pokrewne............................................................................................................................ 143
Rozdział 8. Tablice asocjacyjne .............................................................................................. 145
Opis łańcuchowych tablic asocjacyjnych ..................................................................................... 147
Interfejs łańcuchowych tablic asocjacyjnych ............................................................................... 150
Implementacja łańcuchowej tablicy asocjacyjnej i analiza kodu.............................................. 152
Przykład użycia łańcuchowych tablic asocjacyjnych: tablice symboli.................................... 159
Tablice asocjacyjne z otwartym adresowaniem.......................................................................... 162
Interfejs tablic asocjacyjnych z otwartym adresowaniem ......................................................... 166
4. Spis treści 5
Implementacja tablicy asocjacyjnej z otwartym adresowaniem i analiza kodu .................... 167
Pytania i odpowiedzi ...................................................................................................................... 175
Tematy pokrewne............................................................................................................................ 177
Rozdział 9. Drzewa ................................................................................................................ 179
Drzewa binarne................................................................................................................................ 181
Interfejs drzew binarnych .............................................................................................................. 184
Implementacja drzew binarnych i analiza kodu ........................................................................ 187
Przykład użycia drzewa binarnego: przetwarzanie wyrażeń.................................................. 198
Binarne drzewa wyszukiwania ..................................................................................................... 201
Interfejs binarnych drzew wyszukiwania ................................................................................... 203
Implementacja binarnych drzew wyszukiwania i analiza kodu ............................................. 205
Pytania i odpowiedzi ...................................................................................................................... 227
Tematy pokrewne............................................................................................................................ 228
Rozdział 10. Sterty i kolejki priorytetowe.............................................................................. 231
Sterty.................................................................................................................................................. 232
Interfejs stert ..................................................................................................................................... 233
Implementacja stert i analiza kodu............................................................................................... 235
Kolejki priorytetowe ....................................................................................................................... 245
Interfejs kolejek priorytetowych.................................................................................................... 245
Implementacja kolejek priorytetowych i analiza kodu ............................................................. 247
Przykład zastosowania kolejek priorytetowych: sortowanie paczek...................................... 248
Pytania i odpowiedzi ...................................................................................................................... 250
Tematy pokrewne............................................................................................................................ 251
Rozdział 11. Grafy.................................................................................................................. 253
Grafy .................................................................................................................................................. 254
Interfejs grafów ................................................................................................................................ 260
Implementacja grafów i analiza kodu.......................................................................................... 264
Przykład użycia grafów: zliczanie kroków w ruchu po sieci................................................... 275
Przykład użycia grafów: sortowanie topologiczne .................................................................... 281
Pytania i odpowiedzi ...................................................................................................................... 285
Tematy pokrewne............................................................................................................................ 287
Część III Algorytmy .......................................................................................... 289
Rozdział 12. Sortowanie i przeszukiwanie ............................................................................ 291
Sortowanie przez wstawianie........................................................................................................ 293
Interfejs sortowania przez wstawianie......................................................................................... 293
Implementacja sortowania przez wstawianie i analiza kodu .................................................. 294
Quicksort........................................................................................................................................... 296
Interfejs quicksort ............................................................................................................................ 297
Implementacja quicksort i analiza kodu ...................................................................................... 298
Przykład użycia quicksort: zawartość katalogu ......................................................................... 303
Sortowanie przez złączanie............................................................................................................ 306
Interfejs sortowania przez złączanie ............................................................................................ 307
Implementacja sortowania przez złączanie i analiza kodu ...................................................... 307
5. 6 Algorytmy w C
Sortowanie ze zliczaniem ............................................................................................................... 312
Interfejs sortowania ze zliczaniem................................................................................................ 313
Implementacja sortowania ze zliczaniem i analiza kodu.......................................................... 313
Sortowanie na bazie ........................................................................................................................ 317
Interfejs sortowania na bazie ......................................................................................................... 317
Implementacja sortowania na bazie i analiza kodu................................................................... 318
Wyszukiwanie binarne ................................................................................................................... 321
Interfejs wyszukiwania binarnego................................................................................................ 321
Implementacja wyszukiwania binarnego i analiza kodu.......................................................... 322
Przykład użycia przeszukiwania binarnego: kontrola pisowni............................................... 324
Pytania i odpowiedzi ...................................................................................................................... 326
Tematy pokrewne............................................................................................................................ 328
Rozdział 13. Metody numeryczne.......................................................................................... 329
Przybliżanie wielomianami ........................................................................................................... 330
Interfejs interpolacji wielomianowej............................................................................................. 334
Implementacja interpolacji wielomianowej i analiza kodu ...................................................... 334
Oszacowanie najmniejszymi kwadratami ................................................................................... 337
Interfejs oszacowania najmniejszymi kwadratami..................................................................... 339
Implementacja szacowania najmniejszymi kwadratami i analiza kodu ................................ 339
Rozwiązywanie równań ................................................................................................................. 340
Interfejs rozwiązywania równań................................................................................................... 345
Implementacja rozwiązywania równań i analiza kodu ............................................................ 345
Pytania i odpowiedzi ...................................................................................................................... 347
Tematy pokrewne............................................................................................................................ 348
Rozdział 14. Kompresja danych ............................................................................................. 349
Operatory bitowe............................................................................................................................. 352
Interfejs operacji bitowych ............................................................................................................. 353
Implementacja operacji bitowych i analiza kodu ....................................................................... 354
Kodowanie Huffmana .................................................................................................................... 358
Interfejs kodowania Huffmana ..................................................................................................... 362
Implementacja kodowania Huffmana i analiza kodu ............................................................... 362
Przykład użycia kodowania Huffmana: optymalizacja przesyłania przez sieć .................... 376
Algorytm LZ77................................................................................................................................. 378
Interfejs LZ77.................................................................................................................................... 382
Implementacja LZ77 i analiza kodu ............................................................................................. 382
Pytania i odpowiedzi ...................................................................................................................... 395
Tematy pokrewne............................................................................................................................ 397
Rozdział 15. Szyfrowanie danych .......................................................................................... 399
DES..................................................................................................................................................... 402
Interfejs DES ..................................................................................................................................... 409
Implementacja DES i analiza kodu............................................................................................... 410
Przykład użycia DES: blokowe tryby szyfrowania.................................................................... 420
Algorytm RSA.................................................................................................................................. 423
Interfejs RSA..................................................................................................................................... 426
6. Spis treści 7
Implementacja RSA i analiza kodu............................................................................................... 427
Pytania i odpowiedzi ...................................................................................................................... 430
Tematy pokrewne............................................................................................................................ 432
Rozdział 16. Algorytmy operujące na grafach....................................................................... 435
Drzewa minimalne .......................................................................................................................... 438
Interfejs drzew minimalnych......................................................................................................... 439
Implementacja i analiza kodu........................................................................................................ 441
Najkrótsze ścieżki ............................................................................................................................ 446
Interfejs najkrótszych ścieżek ........................................................................................................ 447
Implementacja najkrótszej ścieżki i analiza kodu ...................................................................... 449
Przykład użycia najkrótszych ścieżek: tablic tras....................................................................... 454
Problem komiwojażera ................................................................................................................... 457
Interfejs problemu komiwojażera ................................................................................................. 459
Implementacja problemu komiwojażera i analiza kodu ........................................................... 460
Pytania i odpowiedzi ...................................................................................................................... 464
Tematy pokrewne............................................................................................................................ 465
Rozdział 17. Algorytmy geometryczne .................................................................................. 467
Sprawdzanie, czy odcinki się przecinają ..................................................................................... 470
Interfejs sprawdzania, czy odcinki się przecinają ...................................................................... 473
Implementacja sprawdzenia, czy odcinki się przecinają i analiza kodu ................................ 473
Obrys wypukły ................................................................................................................................ 475
Interfejs obrysów wypukłych ........................................................................................................ 477
Implementacja obrysu wypukłego i analiza kodu ..................................................................... 478
Długość łuku na powierzchniach sferycznych ........................................................................... 482
Interfejs długości łuku na powierzchniach sferycznych ........................................................... 485
Implementacja długości łuku na powierzchniach sferycznych i analiza kodu ..................... 485
Przykład użycia długości łuku: przybliżone określanie odległości na Ziemi ....................... 486
Pytania i odpowiedzi ...................................................................................................................... 489
Tematy pokrewne............................................................................................................................ 492
Skorowidz................................................................................................................................ 493
7. Algorytmy operujące
na grafach
Grafy to elastyczne struktury danych pozwalające modelować problemy jako relacje
czy powiązania między obiektami (więcej na ten temat w rozdziale 11.). W tym rozdziale
przedstawimy algorytmy operujące na grafach. Jak zobaczymy, wiele z tych algorytmów
przypomina podstawowe algorytmy przeszukiwania grafów wszerz i w głąb, opisane
w rozdziale 11. Te dwie grupy algorytmów są ważne dla innych algorytmów operujących
na grafach, jako że pozwalają systematycznie przeglądać graf.
Istotna różnica między algorytmami z tego rozdziału i rozdziału 11. polega na tym, że algo-
rytmy tego rozdziału dotyczą grafów z wagami. W takich grafach każdej krawędzi przypisuje
się pewną wartość, wagę, która wizualnie jest zaznaczana jako niewielka liczba przy kra-
wędzi. Wprawdzie wagi mogą oznaczać różne rzeczy, ale zwykle opisują koszt związany
z przejściem danej krawędzi. Grafy z wagami i działające na nich algorytmy pozwalają opi-
sywać ogromną liczbę różnorodnych problemów. Listing 16.1 to nagłówek do algorytmów
operujących na grafach, zaprezentowanych w tym rozdziale.
Listing 16.1. Plik nagłówkowy algorytmów operujących na grafach
/*****************************************************************************
* *
* ------------------------------ graphalg.h ------------------------------ *
* *
*****************************************************************************/
#ifndef GRAPHALG_H
#define GRAPHALG_H
#include "graph.h"
#include "list.h"
9. Drzewa minimalne 437
int shortest(Graph *graph, const PathVertex *start, List *paths, int (*match)
(const void *key1, const void *key2));
int tsp(List *vertices, const TspVertex *start, List *tour, int (*match)
(const void *key1, const void *key2));
#endif
W tym rozdziale omówimy:
Drzewa minimalne
Drzewa będące abstrakcjami wielu problemów związanych z połączeniami. Drzewo
minimalne to takie drzewo, które łączy wszystkie węzły w nieskierowanym grafie
z wagami możliwie najmniejszym kosztem.
Najkrótsze ścieżki
Wynik rozwiązywania różnego rodzaju problemów najkrótszej drogi. Najkrótsza droga
lub ścieżka to droga w grafie skierowanym z wagami dwa węzły przy minimalnym
koszcie.
Problem komiwojażera
Zaskakująco trudny problem, w którym szukamy najkrótszej drogi pozwalającej odwie-
dzić wszystkie węzły zupełnego, nieskierowanego grafu z wagami tak, aby przed po-
wrotem do punktu startowego każdy węzeł został odwiedzony dokładnie raz.
Oto wybrane zastosowania algorytmów operujących na grafach:
Dobrze dobrane sieci przesyłowe
Praktyczne zagadnienie dotyczące przesyłania wody, ropy i innych cieczy. Jeśli punkty
odbioru medium z sieci zostaną przedstawione jako węzły grafu, zaś potencjalne połą-
czenia jako krawędzie tego grafu z wagami odpowiadającymi kosztowi połączenia punk-
tów, drzewo minimalne wskazuje optymalny przebieg sieci łączącej wszystkie punkty
odbioru.
Tablice tras (przykład w rozdziale)
Tablice używane przez rutery do przesyłania danych w Internecie. Zadaniem rutera jest
przesłanie danych bliżej ich miejsca docelowego. W przypadku jednego ze sposobów
wyznaczania tras rutery okresowo wyliczają najkrótsze ścieżki między sobą, dzięki
czemu każdy z nich potrafi wykonać następny etap przesłania danych.
Usługi dostawcze
Usługi związane zwykle z odwiedzaniem licznych miejsc w celu odbierania i dostar-
czania paczek. Rozwiązanie problemu komiwojażera pozwala wskazać najlepszą drogę
kuriera, który przed powrotem do bazy musi odwiedzić wszystkie punkty.
Sieci komunikacyjne
Sieci zawierające wiele różnego rodzaju sprzętu: linie telefoniczne, stacje przekaźnikowe
i systemy satelitarne. Wszystkie te urządzenia muszą zostać optymalnie rozmieszczone.
Optymalny rozkład można obliczyć przez wyznaczenie drzewa minimalnego grafu
z wagami opisującego sieć.
10. 438 Rozdział 16. Algorytmy operujące na grafach
Kierowanie samolotów
Problem optymalizacyjny szczególnie istotny w liniach lotniczych i agencjach kontroli
lotu. Samoloty często nie mogą przemieszczać się bezpośrednio między wyznaczonymi
punktami, gdyż muszą korzystać z korytarzy powietrznych (takich lotniczych autostrad),
poza tym obowiązują ograniczenia nałożone przez kontrolerów lotów. Optymalna droga
między dwoma punktami to ścieżka z najmniejszymi wagami.
System transportu zamkniętego
Systemy, w których pojazdy szynowe lub wózki wielokrotnie poruszają się między tymi
samymi punktami. Takie systemy mogą być użyte do rozwożenia części w fabryce lub
do przenoszenia towarów w magazynie. Rozwiązanie problemu komiwojażera pozwala
znaleźć optymalny układ systemu.
Mostkowanie obwodów elektrycznych
Problem optymalizacyjny związany z produkcją elektroniki. Często trzeba połączyć ze
sobą punkty obwodu przy użyciu grafu, w którym poszczególnym punktom odpowia-
dają węzły. Potencjalne połączenia modelowane są jako krawędzie. Rozwiązanie opty-
malne znowu wskazuje drzewo minimalne.
Monitorowanie ruchu kołowego
Obserwowanie zmian ruchu zmierzające do wyznaczenia najlepszej trasy poruszania
się po mieście. Aby uniknąć nadmiernych opóźnień związanych z korkami, używa się
modelu zawierającego informacje o połączeniach i bada się przecięcia z najmniejszym
ruchem.
Drzewa minimalne
Wyobraźmy sobie pinezki powbijane w tablicę i połączone sznurkiem. Przy założeniu, że
wędrując po sznurku możemy dotrzeć do wszystkich pinezek, wyobraźmy sobie grę, której
celem jest usuwanie sznurków dotąd, aż pinezki będą połączone najmniejszą możliwą liczbą
sznurków. To jest właśnie idea drzew minimalnych. Formalnie, jeśli mamy nieskierowany graf
z wagami G = (V, E), jego drzewem minimalnym jest zbiór T krawędzi ze zbioru E łączący
wszystkie węzły z V przy możliwie najmniejszym koszcie. Krawędzie z T tworzą drzewo,
gdyż każdy węzeł ma dokładnie jednego rodzica — węzeł poprzedni, z wyjątkiem węzła
początkowego, który jest korzeniem drzewa.
Algorytm Prima
Jedną z metod wyznaczania drzew minimalnych jest algorytm Prima. Algorytm ten rozpina
drzewo minimalne dodając kolejno krawędzie według ich chwilowej wartości, zatem zali-
czamy go do grupy algorytmów zachłannych (rozdział 1.). Wprawdzie algorytmy zachłanne
często zamiast najlepszych rozwiązań dają jedynie ich przybliżenia, jednak algorytm Prima
daje faktycznie rozwiązanie optymalne.
11. Interfejs drzew minimalnych 439
Algorytm ten działa poprzez wielokrotne wybieranie węzła i badanie jego krawędzi przy-
legających w celu sprawdzenia, czy istnieje szybsza droga połączenia zbadanych dotąd
węzłów. Algorytm ten przypomina przeszukiwanie wszerz, gdyż badane są wszystkie
krawędzie sąsiednie węzła i dopiero wtedy robione jest przejście głębiej w strukturę grafu.
Wartość kluczowa węzła, od którego zaczynamy szukanie to 0. Aby wybrać odpowiedni
węzeł na każdym etapie działania algorytmu, zapamiętujemy kolor i wartość klucza dla
każdego węzła.
Początkowo wszystkie węzły są białe, wszystkie wartości kluczy mają wartość ∞: dowol-
nie dużą liczbę, większą od wag wszystkich krawędzi w grafie. Ustawiamy wartość klucza
węzła, od którego zaczynamy na 0. W miarę działania algorytmu przypisujemy wszystkim
węzłom poza węzłem początkowym rodzica w drzewie minimalnym. Węzeł jest częścią
drzewa minimalnego tylko wtedy, gdy stanie się czarny; przed tym jego rodzic może się
zmieniać.
Dalej algorytm Prima działa następująco: najpierw, spośród wszystkich białych węzłów
grafu wybieramy jeden węzeł u, który ma najmniejszą wartość klucza. Początkowo będzie
to węzeł startowy, gdyż ma wartość 0. Po wybraniu węzła malujemy go na czarno. Następ-
nie, dla każdego białego węzła v przylegającego do u, jeśli waga krawędzi (u,v) jest mniejsza
od wartości klucza v, ustawiamy wartość klucza v na wagę (u, v) i ustalamy u jako rodzica v.
Proces powtarzamy dotąd, aż zaczernione zostaną wszystkie węzły. W miarę wzrostu
drzewa minimalnego wchodzą do niego wszystkie krawędzie mające na dowolnym końcu
czarne węzły.
Na rysunku 16.1 pokazano wyliczanie drzewa minimalnego za pomocą algorytmu Prima.
Wartości klucza i rodzic pokazywane są obok węzła. Wartość klucza jest na lewo od uko-
śnika, rodzic na prawo. Wyszarzone krawędzie to krawędzie rosnącego drzewa minimal-
nego. Drzewo minimalne przedstawione na rysunku ma łączną wagę 17.
Interfejs drzew minimalnych
mst
int mst(Graph *graph, const MstVertex *start, List *span, int (*match)
(const void *key1, const void *key2));
Zwracana wartość: 0, jeśli wyznaczanie drzewa minimalnego się powiodło, i –1 w przeciw-
nym razie.
Opis: Wyliczane jest drzewo minimalne nieskierowanego grafu z wagami graph. Operacja
modyfikuje graf, więc w razie potrzeby trzeba zrobić jego kopię. Każdy węzeł grafu graph
musi zawierać dane typu MstVertext. Każdej krawędzi przypisujemy wagę, ustawiając
pole weight struktury MstVertext na wartość przekazaną jako data2 do graph_ins_edge.
Korzystając z pola data poszczególnych struktur MstVertext, zapisujemy dane tego wę-
zła, na przykład jego identyfikator. Funkcja match grafu ustawiana przy inicjalizacji grafu
za pomocą graph_init służy do porównywania jedynie pól data struktur MstVertext. Jest
12. 440 Rozdział 16. Algorytmy operujące na grafach
Rysunek 16.1. Wyliczanie minimalnego drzewa za pomocą algorytmu Prima
to ta sama funkcja, która przekazywana jest do mst jako match. Po realizacji algorytmu uzy-
skane drzewo minimalne jest przekazywane jako span; węzeł, którego rodzic to NULL, jest
korzeniem całego drzewa. Elementy parent pozostałych pól wskazują węzły poprzedzające
dany węzeł w drzewie. Węzły ze span wskazują faktycznie węzły z grafu graph, więc
trzeba zapewnić istnienie odpowiednich danych tak długo, jak długo będą potrzebne.
Złożoność: O(EV2), gdzie V jest liczbą węzłów grafu, a E — liczbą jego krawędzi. Jednak po
niewielkiej, przedstawionej dalej poprawce, algorytm działa w czasie O(E lg V) (zobacz
tematy powiązane na końcu tego rozdziału).
13. Implementacja i analiza kodu 441
Implementacja i analiza kodu
Aby wyznaczyć drzewo minimalne nieskierowanego grafu z wagami, najpierw trzeba
zapisać graf z wagami w abstrakcyjnym typie danych przedstawionym w rozdziale 11.
Konieczne będzie też pamiętanie informacji potrzebnych w algorytmie Prima, związa-
nych z węzłami i krawędziami. Do tego służy struktura MstVertext; używamy jej na
węzły grafu, które mają być włączane do drzewa minimalnego (listing 16.2). Struktura ta ma
pięć elementów: data to dane związane z węzłem, weight to waga krawędzi przylegającej
do węzła, color to kolor węzła, a key to wartość klucza węzła, zaś parent to rodzic węzła
w drzewie minimalnym.
Listing 16.2. Implementacja wyliczania drzewa minimalnego
/*****************************************************************************
* *
* --------------------------------- mst.c -------------------------------- *
* *
*****************************************************************************/
#include <float.h>
#include <stdlib.h>
#include "graph.h"
#include "graphalg.h"
#include "list.h"
/*****************************************************************************
* *
* ---------------------------------- mst --------------------------------- *
* *
*****************************************************************************/
int mst(Graph *graph, const MstVertex *start, List *span, int (*match)(const
void *key1, const void *key2)) {
AdjList *adjlist;
MstVertex *mst_vertex,
*adj_vertex;
ListElmt *element,
*member;
double minimum;
int found,
i;
/*****************************************************************************
* *
* Inicjalizacja wszystkich węzłów grafu. *
* *
*****************************************************************************/
found = 0;
for (element = list_head(&graph_adjlists(graph)); element != NULL; element =
list_next(element)) {
14. 442 Rozdział 16. Algorytmy operujące na grafach
mst_vertex = ((AdjList *)list_data(element))->vertex;
if (match(mst_vertex, start)) {
/***********************************************************************
* *
* Inicjalizacja węzła początkowego. *
* *
***********************************************************************/
mst_vertex->color = white;
mst_vertex->key = 0;
mst_vertex->parent = NULL;
found = 1;
}
else {
/***********************************************************************
* *
* Inicjalizacja węzłów poza węzłem początkowym. *
* *
***********************************************************************/
mst_vertex->color = white;
mst_vertex->key = DBL_MAX;
mst_vertex->parent = NULL;
}
}
/*****************************************************************************
* *
* Jeśli nie znaleziono węzła początkowego, kończymy. *
* *
*****************************************************************************/
if (!found)
return -1;
/*****************************************************************************
* *
* Wyznaczamy drzewo minimalne algorytmem Prima. *
* *
*****************************************************************************/
i = 0;
while (i < graph_vcount(graph)) {
/**************************************************************************
* *
* Wybieramy biały węzeł o najmniejszej wartości klucza. *
* *
**************************************************************************/
minimum = DBL_MAX;
for (element = list_head(&graph_adjlists(graph)); element != NULL; element
= list_next(element)) {
15. Implementacja i analiza kodu 443
mst_vertex = ((AdjList *)list_data(element))->vertex;
if (mst_vertex->color == white && mst_vertex->key < minimum) {
minimum = mst_vertex->key;
adjlist = list_data(element);
}
}
/**************************************************************************
* *
* Zaczerniamy wybrany węzeł. *
* *
**************************************************************************/
((MstVertex *)adjlist->vertex)->color = black;
/**************************************************************************
* *
* Przeglądamy wszystkie węzły sąsiadujące z węzłem wybranym. *
* *
**************************************************************************/
for (member = list_head(&adjlist->adjacent); member != NULL; member =
list_next(member)) {
adj_vertex = list_data(member);
/***********************************************************************
* *
* Znalezienie węzła sąsiadującego z listy struktur sąsiedztwa. *
* *
***********************************************************************/
for (element = list_head(&graph_adjlists(graph)); element != NULL;
element = list_next(element)) {
mst_vertex = ((AdjList *)list_data(element))->vertex;
if (match(mst_vertex, adj_vertex)) {
/*****************************************************************
* *
* Decydujemy, czy zmieniamy wartość klucza i rodzica węzła *
* sąsiedniego z listy struktur list sąsiedztwa. *
* *
*****************************************************************/
if (mst_vertex->color == white && adj_vertex->weight <
mst_vertex->key) {
mst_vertex->key = adj_vertex->weight;
mst_vertex->parent = adjlist->vertex;
}
break;
}
}
16. 444 Rozdział 16. Algorytmy operujące na grafach
}
/**************************************************************************
* *
* Przygotowujemy się do wyboru następnego węzła. *
* *
**************************************************************************/
i++;
}
/*****************************************************************************
* *
* Ładujemy drzewo minimalne na listę. *
* *
*****************************************************************************/
list_init(span, NULL);
for (element = list_head(&graph_adjlists(graph)); element != NULL; element =
list_next(element)) {
/**************************************************************************
* *
* Ładowanie wszystkich czarnych węzłów z listy sąsiedztwa. *
* *
**************************************************************************/
mst_vertex = ((AdjList *)list_data(element))->vertex;
if (mst_vertex->color == black) {
if (list_ins_next(span, list_tail(span), mst_vertex) != 0) {
list_destroy(span);
return -1;
}
}
}
return 0;
}
Budowa grafu ze struktur MstVertex wygląda niemalże tak samo, jak budowa grafu za-
wierającego inne typy danych. Do wstawienia węzła do grafu używamy graph_ins_vertex
i przekazujemy jako dane data strukturę MstVertex. Analogicznie, aby wstawić krawędź,
wywołujemy graph_ins_edge, i jako data1 i data2 przekazujemy struktury data1 i data2.
Podczas wstawiania węzła ustawiamy jedynie pole data struktury MstVertex. Przy
wstawianiu krawędzi ustawiamy pole data struktury data1 oraz pola data i weight
struktury data2. Występujące w data2 pole weight jest wagą krawędzi od węzła opisy-
wanego przez data1 do węzła opisywanego przez data2. Praktycznie wagi wylicza się
i zapisuje zwykle jako liczby zmiennoprzecinkowe. Wartości kluczy wylicza się na pod-
stawie wag, więc też są to liczby zmiennoprzecinkowe.
17. Implementacja i analiza kodu 445
Operacja mst najpierw inicjalizuje wszystkie węzły z listy sąsiedztwa. Początkowe wartości
kluczy wszystkich węzłów ustawiamy na DBL_MAX, jedynie węzeł początkowy otrzymuje
wartość 0.0. Przypomnijmy, że w typie abstrakcyjnym grafów graf jest listą struktur sąsiedz-
twa, struktura odpowiadająca każdemu węzłowi zawiera ten właśnie węzeł oraz zbiór
węzłów doń przylegających (więcej na ten temat w rozdziale 11.). Dla węzła zapisanego
w strukturze listy sąsiedztwa zapisujemy jego kolor, wartość klucza i rodzica. Aby wszystkie
te informacje zgromadzić w jednym miejscu, korzystamy z samego węzła, a nie z węzłów
z jego listy sąsiedztwa. Ten sam węzeł może się pojawić na wielu listach sąsiedztwa, ale
każdy węzeł wraz ze swoją listą występuje dokładnie raz.
Najważniejszym punktem algorytmu Prima jest pojedyncza pętla realizująca iterację raz dla
każdego węzła grafu. Każdą iterację zaczynamy od wybrania węzła mającego najmniejszą
wartość klucza pośród białych węzłów. Zaczerniamy ten węzeł, następnie przechodzimy
po węzłach z nim sąsiadujących. Podczas ich przeglądania sprawdzamy kolor i wartość klu-
cza, porównujemy je z kolorem i wartością klucza wybranego węzła. Jeśli węzeł sąsiedni jest
biały, a jego klucz ma wartość mniejszą od klucza wybranego węzła, ustawiamy wartość
klucza sąsiedniego węzła na wagę krawędzi między węzłem wybranym i sąsiednim, poza
tym jako rodzica węzła sąsiedniego ustalamy węzeł bieżący. Aktualizujemy odpowiednie
informacje dla węzła sąsiedniego. Cały proces powtarzamy, aż wszystkie węzły będą czarne.
Kiedy kończy się pętla główna algorytmu Prima, wyliczanie drzewa minimalnego jest skoń-
czone. W tej chwili wszystkie czarne struktury MstVertex z list sąsiedztwa wstawiamy
na listę powiązaną span. Znajdujący się na tej liście węzeł mający rodzica o wartości
NULL jest korzeniem drzewa. Element parent wszystkich innych węzłów wskazuje
węzeł poprzedzający go w drzewie. Pole weight poszczególnych struktur MstVertex nie
jest wypełniane, gdyż jest ono potrzebne jedynie do zapisywania wag na listach sąsiedztwa.
Na rysunku 16.2 pokazano takie struktury MstVertex, jakie zostaną zwrócone po wyzna-
czeniu drzewa minimalnego grafu z rysunku 16.1.
Rysunek 16.2. Lista zwracana przez funkcję mst jako drzewo minimalne grafu z rysunku 16.1
Złożoność mst wynosi O(EV2), gdzie V jest liczbą węzłów grafu, zaś E jest liczbą krawędzi.
Wynika to ze sposobu działania pętli głównej, w której wybieramy węzły i porównujemy
wagi i wartości kluczy. Dla każdego spośród V węzłów najpierw przeglądamy V elemen-
tów z list sąsiedztwa w celu sprawdzenia, który biały węzeł ma najmniejszą wartość klu-
cza. Ta część pętli ma zatem złożoność O(V2). Następnie dla każdego węzła sąsiadującego
z wybranym węzłem sprawdzamy listę sąsiedztwa, aby sprawdzić, czy trzeba zmienić
18. 446 Rozdział 16. Algorytmy operujące na grafach
wartość klucza i zmienić rodzica. Dla wszystkich V węzłów E razy sprawdzamy listę — raz
dla każdej krawędzi. Każde z tych sprawdzeń wymaga czasu O(V), jest to czas przeszuki-
wania listy. Wobec tego dla wszystkich wybieranych V węzłów operacja o złożoności O(V)
wykonywana jest E razy. W związku z tym ta część pętli ma złożoność O(EV2), a całkowita
złożoność pętli głównej wynosi O(V2 + EV2), czyli O(EV2). Pętle przed pętlą główną i za nią
mają złożoność O(V), więc złożoność mst wynosi O(EV2). Przypomnijmy jednak, że niewiel-
kim nakładem pracy można poprawić szybkość działania algorytmu Prima do O(E lg V)
(pokażemy to pod koniec rozdziału).
Najkrótsze ścieżki
Znalezienie najkrótszej ścieżki lub ścieżki o najmniejszej wadze między wskazanymi węzłami
grafu jest istotą wielu problemów związanych ze znajdowaniem drogi. Formalnie, jeśli
mamy skierowany graf z wagami G = (V, E), najkrótsza ścieżka z węzła s do węzła t ze
zbioru V jest zbiorem S krawędzi z E takim, że s łączy t po minimalnym koszcie.
Znajdując S rozwiązujemy problem najkrótszej ścieżki między pojedynczą parą węzłów. W tym
celu tak naprawdę rozwiązujemy ogólniejszy problem najkrótszej ścieżki z pojedynczego źró-
dła, problem pojedynczej pary rozwiązując niejako „przy okazji”. W przypadku problemu
z pojedynczym źródłem, wyznaczamy najkrótsze ścieżki z węzła początkowego s do wszyst-
kich pozostałych węzłów z niego osiągalnych. Robimy tak dlatego, że nie jest znany żaden
algorytm, który szybciej rozwiązywałby problem z pojedynczą parą węzłów.
Algorytm Dijkstry
Jednym z rozwiązań problemu najkrótszej ścieżki z pojedynczego źródła jest algorytm
Dijkstry. Algorytm ten pozwala budować drzewo najkrótszych ścieżek, którego korzeniem jest
węzeł początkowy s, a gałęziami są najkrótsze ścieżki z s do wszystkich węzłów z G. Algo-
rytm ten wymaga, aby wagi krawędzi były nieujemne. Podobnie jak w przypadku algo-
rytmu Prima, algorytm Dijkstry należy do grupy algorytmów zachłannych, które akurat dają
optymalne rozwiązanie. Algorytm ten jest algorytmem zachłannym, gdyż nowe krawędzie
dodawane są do drzewa najkrótszej ścieżki według ich oceny w danej chwili.
Podstawą algorytmu Dijkstry jest wielokrotne wybieranie węzłów i badanie krawędzi
przylegających do nich w celu określenia, czy najkrótsza ścieżka do poszczególnych węzłów
może zostać poprawiona. Algorytm ten jest nieco podobny do przeszukiwania wszerz, gdyż
najpierw badane są wszystkie krawędzie przylegające do węzła, dopiero potem przecho-
dzimy do dalszej części grafu. Aby wyznaczyć najkrótszą ścieżkę między s a wszystkimi
innymi węzłami, w algorytmie Dijkstry wymaga się, aby w każdym węźle zapisywane były
kolor i oszacowanie najkrótszej ścieżki. Zwykle oszacowanie najkrótszej ścieżki zapisuje się
w zmiennej d.
Początkowo wszystkim węzłom przypisujemy kolor biały, wszystkie oszacowania ścieżki
ustawiamy na ∞, co oznacza wielkość dowolnie dużą, większą od wagi dowolnej krawę-
dzi grafu. Oszacowanie najkrótszej ścieżki dla węzła początkowego ustawiamy na 0.
19. Interfejs najkrótszych ścieżek 447
W miarę działania algorytmu, wszystkim węzłom poza początkowym przypisujemy rodzi-
ców z drzewa najkrótszych ścieżek. Rodzic węzła może zmieniać się przed zakończeniem
działania algorytmu wielokrotnie.
Dalej algorytm Dijkstry działa następująco: najpierw spośród wszystkich białych węzłów
grafu wybieramy węzeł u z najmniejszym oszacowaniem najkrótszej ścieżki. Wstępnie
będzie to węzeł początkowy, którego ścieżka została oszacowana na 0. Po wybraniu węzła
zaczerniamy go. Następnie, dla każdego białego węzła v przylegającego do u zwalniamy
krawędź (u, v). Kiedy zwalniamy krawędź, sprawdzamy, czy przejście z u do v poprawi
wyznaczoną dotąd najkrótszą ścieżkę do v. W tym celu dodajemy wagę (u, v) do oszaco-
wania najkrótszej ścieżki do u. Jeśli wartość ta jest mniejsza lub równa oszacowaniu najkrót-
szej ścieżki do v, przypisujemy tę wartość v jako nowe oszacowanie najkrótszej ścieżki i usta-
wiamy v jako rodzica u. Proces ten powtarzamy dotąd, aż wszystkie węzły będą czarne.
Kiedy wyliczone zostanie już drzewo najkrótszych ścieżek, najkrótszą ścieżkę z węzła s do
danego węzła t można wybrać poprzez przejście po tym drzewie od węzła t przez kolejnych
rodziców, aż do s. Ścieżka o odwrotnej kolejności do uzyskanej jest ścieżką szukaną.
Na rysunku 16.3 pokazano wyznaczanie najkrótszej ścieżki z a do wszystkich innych
węzłów grafu. Na przykład, najkrótsza ścieżka z a do b to 〈a, c, f, b〉, jej waga wynosi 7.
Oszacowania najkrótszych ścieżek i ich rodziców pokazano obok poszczególnych węzłów.
Oszacowanie najkrótszej ścieżki znajduje się na lewo od ukośnika, rodzic węzła na prawo.
Krawędzie zaznaczone na szaro są krawędziami zmieniającego się drzewa najkrótszych
ścieżek.
Interfejs najkrótszych ścieżek
shortest
int shortest(Graph *graph, const PathVertex *start, List *paths, int (*match)
(const void *key1, const void *key2));
Zwracana wartość: 0, jeśli wyznaczanie najkrótszej ścieżki się powiodło i –1 w przeciw-
nym razie.
Opis: Wylicza najkrótszą ścieżkę między start a wszystkimi pozostałymi węzłami grafu
skierowanego z wagami graph. Operacja modyfikuje graph, więc w razie potrzeby należy
zrobić jego kopię przed jej wywołaniem. Wszystkie węzły grafu muszą zawierać dane typu
PathVertex. Wagę poszczególnym krawędziom przypisuje się przez nadanie wartości
polu weight struktury PathVertex przekazanej do graph_ins_edge jako data2. Pola data
poszczególnych struktur PathVertex używa się do zapisywania danych węzła, na przy-
kład jego identyfikatora. Funkcja match grafu, przekazywana podczas inicjalizacji do graph_
init, używana jest do porównywania pól data. Jest to ta sama funkcja, która powinna być
przekazana do shortest jako match. Kiedy najkrótsza ścieżka zostanie wyliczona, zwracana
jest w liście paths, będącej listą struktur PathVertex. W paths rodzic węzła początko-
wego ustawiany jest na NULL, zaś pole parent wszystkich pozostałych węzłów wskazuje
20. 448 Rozdział 16. Algorytmy operujące na grafach
Rysunek 16.3. Wyznaczanie za pomocą algorytmu Dijkstry najkrótszych ścieżek
węzeł poprzedzający dany węzeł na ścieżce zaczynającej się od węzła początkowego. Węzły
z paths wskazują węzły należące do graph, wobec czego pamięć zajmowana przez te
węzły musi być dostępna tak długo, jak długo korzystamy z paths. Potem do usunięcia
paths używa się operacji list_destroy.
Złożoność: O(EV2), gdzie V jest liczbą węzłów grafu, a E liczbą jego krawędzi. Można uzy-
skać nieznaczną poprawę szybkości, w postaci wyniku O(E lg V), podobnie jak w przy-
padku omawianego wcześniej algorytmu Prima.
21. Implementacja najkrótszej ścieżki i analiza kodu 449
Implementacja najkrótszej ścieżki i analiza kodu
Aby wyznaczyć najkrótsze ścieżki z danego węzła do wszystkich węzłów z niego dostęp-
nych w skierowanym grafie z wagami, graf zapisujemy tak samo, jak zrobiliśmy to przy
określaniu drzewa minimalnego, jednak zamiast struktury MstVertex używamy struktury
PathVertex (listing 16.3). W strukturze tej możemy zapisać grafy z wagami oraz zapa-
miętywać informacje o węzłach i grafach wymagane w algorytmie Dijkstry. Struktura ta ma
pięć elementów: data to dane węzła, weight to waga krawędzi przylegającej do węzła,
color to kolor węzła, d jest oszacowaniem najkrótszej ścieżki do węzła, a parent to rodzic
węzła w drzewie najkrótszych ścieżek. Graf zawierający struktury PathVertex tworzymy
tak samo, jak wcześniej tworzyliśmy graf zawierający struktury MstVertex.
Listing 16.3. Implementacja wyliczania najkrótszych ścieżek
/*****************************************************************************
* *
* ------------------------------ shortest.c ------------------------------ *
* *
*****************************************************************************/
#include <float.h>
#include <stdlib.h>
#include "graph.h"
#include "graphalg.h"
#include "list.h"
#include "set.h"
/*****************************************************************************
* *
* --------------------------------- relax -------------------------------- *
* *
*****************************************************************************/
static void relax(PathVertex *u, PathVertex *v, double weight) {
/*****************************************************************************
* *
* Zwolnienie krawędzi między węzłami u i v. *
* *
*****************************************************************************/
if (v->d > u->d + weight) {
v->d = u->d + weight;
v->parent = u;
}
return;
}
/*****************************************************************************
* *
* ------------------------------- shortest ------------------------------- *
* *
22. 450 Rozdział 16. Algorytmy operujące na grafach
*****************************************************************************/
int shortest(Graph *graph, const PathVertex *start, List *paths, int (*match)
(const void *key1, const void *key2)) {
AdjList *adjlist;
PathVertex *pth_vertex,
*adj_vertex;
ListElmt *element,
*member;
double minimum;
int found,
i;
/*****************************************************************************
* *
* Inicjalizacja wszystkich węzłów grafu. *
* *
*****************************************************************************/
found = 0;
for (element = list_head(&graph_adjlists(graph)); element != NULL; element =
list_next(element)) {
pth_vertex = ((AdjList *)list_data(element))->vertex;
if (match(pth_vertex, start)) {
/***********************************************************************
* *
* Inicjalizacja węzła początkowego. *
* *
***********************************************************************/
pth_vertex->color = white;
pth_vertex->d = 0;
pth_vertex->parent = NULL;
found = 1;
}
else {
/***********************************************************************
* *
* Inicjalizacja wszystkich węzłów poza początkowym. *
* *
***********************************************************************/
pth_vertex->color = white;
pth_vertex->d = DBL_MAX;
pth_vertex->parent = NULL;
}
}
23. Implementacja najkrótszej ścieżki i analiza kodu 451
/*****************************************************************************
* *
* Jeśli nie znaleziono węzła początkowego, kończymy. *
* *
*****************************************************************************/
if (!found)
return -1;
/*****************************************************************************
* *
* Za pomocą algorytmu Dijkstry wyznaczamy najkrótsze ście ki z węzła *
* początkowego. *
* *
*****************************************************************************/
i = 0;
while (i < graph_vcount(graph)) {
/**************************************************************************
* *
* Wybieramy biały węzeł z najmniejszym oszacowaniem najkrótszej ście ki. *
* *
**************************************************************************/
minimum = DBL_MAX;
for (element = list_head(&graph_adjlists(graph)); element != NULL; element
= list_next(element)) {
pth_vertex = ((AdjList *)list_data(element))->vertex;
if (pth_vertex->color == white && pth_vertex->d < minimum) {
minimum = pth_vertex->d;
adjlist = list_data(element);
}
}
/**************************************************************************
* *
* Zaczerniamy wybrany węzeł. *
* *
**************************************************************************/
((PathVertex *)adjlist->vertex)->color = black;
/**************************************************************************
* *
* Przechodzimy wszystkie węzły sąsiadujące z węzłem wybranym. *
* *
**************************************************************************/
for (member = list_head(&adjlist->adjacent); member != NULL; member =
list_next(member)) {
adj_vertex = list_data(member);
/***********************************************************************
24. 452 Rozdział 16. Algorytmy operujące na grafach
* *
* Znajdujemy węzły sąsiadujące na listach sąsiedztwa. *
* *
***********************************************************************/
for (element = list_head(&graph_adjlists(graph)); element != NULL;
element = list_next(element)) {
pth_vertex = ((AdjList *)list_data(element))->vertex;
if (match(pth_vertex, adj_vertex)) {
/*****************************************************************
* *
* Zwalniamy węzeł sąsiedni w strukturach list sąsiedztwa. *
* *
*****************************************************************/
relax(adjlist->vertex, pth_vertex, adj_vertex->weight);
}
}
}
/**************************************************************************
* *
* Przygotowujemy się do wybrania następnego węzła. *
* *
**************************************************************************/
i++;
}
/*****************************************************************************
* *
* Ładujemy węzły oraz dane o ich ście kach na listę. *
* *
*****************************************************************************/
list_init(paths, NULL);
for (element = list_head(&graph_adjlists(graph)); element != NULL; element =
list_next(element)) {
/**************************************************************************
* *
* Ładujemy wszystkie czarne węzły z listy struktur list sąsiedztwa. *
* *
**************************************************************************/
pth_vertex = ((AdjList *)list_data(element))->vertex;
if (pth_vertex->color == black) {
if (list_ins_next(paths, list_tail(paths), pth_vertex) != 0) {
list_destroy(paths);
return -1;
}
25. Implementacja najkrótszej ścieżki i analiza kodu 453
}
}
return 0;
}
Operacja shortest najpierw inicjalizuje wszystkie węzły na listach sąsiedztwa: oszacowania
najkrótszych ścieżek ustawiane są na DBL_MAX, z wyjątkiem węzła początkowego, dla któ-
rego oszacowaniem jest 0.0. Węzły zapisywane w poszczególnych strukturach list sąsiedz-
twa używane są do zapamiętywania koloru i oszacowania najkrótszej ścieżki z takich
samych powodów, jak w przypadku drzew minimalnych.
Centralnym punktem algorytmu Dijkstry jest pojedyncza pętla wykonująca iterację raz dla
każdego węzła grafu. Zaczynamy kolejne iteracje od wybrania węzła mającego najmniejsze
oszacowanie najkrótszej ścieżki spośród wszystkich białych węzłów. Zaczerniamy ten
węzeł. Następnie przechodzimy do węzłów sąsiadujących z wybranym węzłem. Kiedy
przechodzimy do kolejnego węzła, sprawdzamy jego kolor i oszacowanie najkrótszej ścieżki;
wywołujemy relax w celu zwolnienia krawędzi łączącej wybrany węzeł i węzeł sąsiedni. Jeśli
relax musi zaktualizować oszacowanie najkrótszej ścieżki i rodzica węzła sąsiedniego, robi to
w strukturze listy sąsiedztwa. Proces powtarzany jest dotąd, aż wszystkie węzły będą czarne.
Kiedy pętla główna algorytmu Dijkstry skończy swoje działanie, najkrótsze ścieżki z danego
węzła do wszystkich węzłów z niego osiągalnych są już wyznaczone. Wstawiamy wszystkie
struktury PathVertex czarnych węzłów z listy struktur sąsiedztwa do listy powiązanej
paths. Znajdujący się na tej liście węzeł początkowy ma rodzica o wartości NULL. Element
parent wszystkich innych węzłów wskazuje węzeł poprzedzający go w najkrótszej ścieżce.
Pole weight poszczególnych struktur PathVertex nie jest wypełniane, gdyż jest ono
potrzebne jedynie do zapisywania wag na listach sąsiedztwa. Na rysunku 16.4 pokazano
takie struktury PathVertex, jakie zostaną zwrócone po wyznaczeniu najkrótszych ścieżek
dla grafu z rysunku 16.3.
Rysunek 16.4. Lista zwracana przez funkcję shortest jako najkrótsze ścieżki
wyznaczone dla grafu z rysunku 16.3
Złożoność shortest wynosi O(EV2), gdzie V jest liczbą węzłów grafu, zaś E jest liczbą kra-
wędzi. Wynika to ze sposobu działania pętli głównej, w której wybieramy węzły i zwal-
niamy krawędzie. Dla każdego spośród V węzłów najpierw przeglądamy V elementów
26. 454 Rozdział 16. Algorytmy operujące na grafach
z list sąsiedztwa w celu sprawdzenia, który biały węzeł ma najmniejsze oszacowanie naj-
krótszej ścieżki. Ta część pętli ma zatem złożoność O(V2). Następnie dla każdego węzła
sąsiadującego z wybranym węzłem sprawdzamy listę sąsiedztwa w celu uzyskania infor-
macji potrzebnych do zwolnienia krawędzi między węzłami. Dla wszystkich V węzłów E
razy sprawdzamy listę — raz dla każdej krawędzi. Każde z tych sprawdzeń wymaga czasu
O(V), jest to czas przeszukiwania listy. Wobec tego dla wszystkich wybieranych V węzłów
operacja o złożoności O(V) wykonywana jest E razy. Dlatego ta część pętli ma złożoność
O(EV2), a całkowita złożoność pętli głównej wynosi O(V2 + EV2) czyli O(EV2). Pętle przed
pętlą główną i za nią mają złożoność O(V), więc złożoność shortest wynosi O(EV2). Wynik
ten, podobnie jak w przypadku algorytmu Prima, można poprawić do O(E lg V).
Przykład użycia najkrótszych ścieżek: tablic tras
Jednym z zastosowań, w których najkrótsze ścieżki odgrywają istotną rolę, jest wyznaczanie
tras danych między punktamiInternetu. Wyznaczanie tras polega na podejmowaniu celo-
wych decyzji o sposobie przesyłania danych między punktami. W Internecie przesyła się
małe fragmenty danych nazywane pakietami przez połączone ze sobą punkty nazywane
bramkami. Kiedy poszczególne pakiety przechodzą przez bramkę, ruter sprawdza, gdzie
dany pakiet ma dotrzeć i wybiera dla niego następną bramkę. Celem przyświecającym każ-
demu z ruterów jest przesyłanie pakietu coraz bliżej jego punktu docelowego.
Aby pakiety zbliżały się faktycznie do celu, rutery zawierają dane o strukturze, czyli topologii
sieci. Dane te mają postać tablicy tras. Tablica taka zawiera jeden zapis dla każdej bramki,
której położenie zna ruter. Wszystkie zapisy wskazują następną bramkę, do której mają być
kierowane pakiety przeznaczone dla danej bramki.
Aby pakiety były stale przesyłane możliwie najlepszą drogą, rutery okresowo aktualizują
swoje tablice tras w celu uwzględnienia w nich zmian w Internecie. W jednym z rodzajów
wyznaczania tras, wyznaczaniu tras pierwszą najkrótszą ścieżką lub wyznaczaniu tras SPF, każdy
ruter ma własną mapę sieci, dzięki czemu może aktualizować swoją tablicę tras wyliczając
najkrótsze ścieżki między sobą a bramkami docelowymi. Mapa jest skierowanym grafem
z wagami, którego węzły odpowiadają bramkom, a krawędzie połączeniom między bram-
kami. Waga każdej krawędzi jest wyznaczana na podstawie pomiarów szybkości ostatnio
przesyłanych pakietów. Okresowo rutery wymieniają między sobą dane o topologii i szyb-
kości działania za pomocą specjalnie w tym celu opracowanego protokołu.
Na listingu 16.4. pokazano funkcję route wyliczającą dane potrzebne do aktualizacji jednej
pozycji tablicy tras przy wyznaczaniu tras SPF. Funkcja pobiera listę informacji o ścieżkach
zwracaną przez parametr paths funkcji shortest. Na podstawie tych informacji decyduje się,
do której bramki należy następnie wysłać pakiet, aby jak najszybciej dotarł do miejsca prze-
znaczenia.
Listing 16.4. Implementacja funkcji aktualizującej zapisy w tablicy tras
/*****************************************************************************
* *
* -------------------------------- route.c ------------------------------- *
27. Przykład użycia najkrótszych ścieżek: tablic tras 455
* *
*****************************************************************************/
#include <stdlib.h>
#include "graphalg.h"
#include "list.h"
#include "route.h"
/*****************************************************************************
* *
* --------------------------------- route -------------------------------- *
* *
*****************************************************************************/
int route(List *paths, PathVertex *destination, PathVertex **next, int
(*match)(const void *key1, const void *key2)) {
PathVertex *temp,
*parent;
ListElmt *element;
int found;
/*****************************************************************************
* *
* Znalezienie miejsca docelowego na liście bramek. *
* *
*****************************************************************************/
found = 0;
for (element = list_head(paths); element != NULL; element =
list_next(element)) {
if (match(list_data(element), destination)) {
temp = list_data(element);
parent = ((PathVertex *)list_data(element))->parent;
found = 1;
break;
}
}
/*****************************************************************************
* *
* Jeśli miejsce docelowe jest nieosiągalne, kończymy. *
* *
*****************************************************************************/
if (!found)
return -1;
/*****************************************************************************
* *
* Wyliczenie następnej bramki na najkrótszej ście ce do celu. *
* *
*****************************************************************************/
while (parent != NULL) {
28. 456 Rozdział 16. Algorytmy operujące na grafach
temp = list_data(element);
found = 0;
for (element = list_head(paths); element != NULL; element =
list_next(element)) {
if (match(list_data(element), parent)) {
parent = ((PathVertex *)list_data(element))->parent;
found = 1;
break;
}
}
/**************************************************************************
* *
* Jeśli miejsce docelowe jest niedostępne, kończymy. *
* *
**************************************************************************/
if (!found)
return -1;
}
*next = temp;
return 0;
}
Aby wypełnić całą tablicę w zakresie dotyczącym pewnej bramki, najpierw wywołujemy
shortest z bramką wskazaną jako start. Następnie, dla każdego miejsca przeznaczenia,
które ma być uwzględnione w tablicy tras, wywołujemy route z miejscem docelowym jako
parametrem destination. Przekazujemy tę samą funkcję match, której użyto w graph_init
przed wygenerowaniem paths. Funkcja route śledzi wskaźniki rodziców zapisane w paths
od punktu docelowego wstecz, do bramki, i wybiera najlepszy sposób przesłania pakietu
zwracając go w next. Węzeł wskazany w next wskazuje węzeł z paths, więc pamięć
związana z paths musi być dostępna tak długo, jak długo korzystamy z next.
Na rysunku 16.5a pokazano wyliczanie tablicy tras dla rutera z bramki gw1 w sieci z grafu
pokazanego niżej. Na rysunku 16.5b pokazano wyliczanie tablicy tras dla rutera z bramki
gw2. Warto zwrócić uwagę, że uzyskiwane najkrótsze ścieżki są różne w zależności od
punktu początkowego. Poza tym na rysunku 16.5b nie można sięgnąć do punktu gw1, więc
w tablicy tras nie ma odpowiedniego zapisu.
29. Problem komiwojażera 457
Rysunek 16.5. Tablice tras wyznaczone dla internetowych bramek (a) gw1 i (b) gw2
Złożoność route to O(n2), gdzie n jest liczbą bramek w paths. Wynika to stąd, że przeszu-
kujemy w paths rodziców poszczególnych węzłów na drodze między lokalizacją doce-
lową a punktem początkowym. W najgorszym wypadku, jeśli najkrótsza ścieżka zawiera
w paths wszystkie bramki, w celu odnalezienia wszystkich rodziców konieczne może być
przeszukanie całej listy bramek n razy.
Problem komiwojażera
Wyobraźmy sobie komiwojażera, który odwiedza w ramach swojej pracy szereg miast. Jego
celem jest odwiedzenie każdego miasta dokładnie jednokrotnie i powrót do punktu wyjścia
oraz pokonanie przy tym jak najkrótszej drogi. Tak właśnie wygląda podstawowe sformu-
łowanie problemu komiwojażera.
W grafach cykl polegający na odwiedzeniu każdego węzła dokładnie raz i powrocie następ-
nie do punktu wyjścia nazywany jest cyklem hamiltonowskim. Aby rozwiązać problem komi-
wojażera, jako modelu używa się grafu G = (V, E) i szuka się w nim jak najkrótszego cyklu
hamiltonowskiego. G jest zupełnym, nieskierowanym grafem z wagami, V jest zbiorem
węzłów reprezentujących punkty, które mają zostać odwiedzone, E to zbiór krawędzi repre-
zentujących połączenia węzłów. Wagą każdej krawędzi z E jest odległość między węzłami
wyznaczającymi tę krawędź. Graf G jest nieskierowany i zupełny, więc E zawiera V(V – 1)
/ 2 krawędzi.
Jednym ze sposobów rozwiązania problemu komiwojażera jest zbadanie wszystkich możli-
wych permutacji węzłów z G. Każda permutacja odpowiada jednej drodze, więc wystarczy
po prostu wybrać permutację dającą najkrótszą drogę. Niestety, podejście takie jest prak-
tycznie nieprzydatne, gdyż jego złożoność nie jest ograniczona wielomianem. Złożoność jest
ograniczona wielomianem, jeśli nie przekracza O(nk), gdzie k jest pewną stałą. Dla zbioru
zawierającego V węzłów istnieje V! możliwych permutacji, więc ich zbadanie będzie wyma-
gało czasu O(V!), gdzie V! to silnia liczby V, czyli iloczyn wszystkich liczb od 1 do V włącznie.
30. 458 Rozdział 16. Algorytmy operujące na grafach
W zasadzie unika się stosowania algorytmów o złożoności nieograniczonej wielomianami,
gdyż nawet dla małych ilości danych wejściowych problemy szybko stają się zbyt złożone,
aby je obliczyć. Problem komiwojażera jest szczególnego rodzaju problemem nieograniczo-
nym wielomianem, jest problemem NP-zupełnym. Problemy NP-zupełne są to takie pro-
blemy, dla których nie są znane algorytmy ograniczone wielomianem, ale dla których nie
istnieją też dowody na istnienie takich algorytmów. Niemniej, prawdopodobieństwo znale-
zienia odpowiedniego algorytmu jest niesłychanie małe. Mając to wszystko na uwadze, pro-
blem komiwojażera rozwiązujemy korzystając z algorytmu przybliżającego (więcej na ten
temat w rozdziale 1.).
Zastosowanie heurystyki najbliższego sąsiada
Jednym ze sposobów wyliczenia przybliżonej drogi komiwojażera jest zastosowanie heury-
styki najbliższego sąsiada. Zaczynamy od drogi zawierającej tylko jeden węzeł, początkowy,
który zaczerniamy. Wszystkie pozostałe węzły są białe dotąd, aż zostaną dodane do trasy
— wtedy też je zaczernimy. Następnie dla każdego węzła v, który jeszcze nie należy do
trasy, wyliczamy wagi krawędzi między ostatnio dodanym do trasy węzłem u a węzłem v.
Przypomnijmy, że w opisywanym problemie wagą krawędzi jest odległość między węzłami
u i v. Odległości między węzłami wyliczamy przez wyznaczenie odległości między odpo-
wiadającymi im punktami. Odległość r między punktami (x1, y1) i (x2, y2) wyznacza się za
pomocą wzoru:
r = ( x2 − x1 ) 2 + ( y 2 − y1 ) 2
Korzystając z powyższego wzoru wybieramy węzeł najbliższy u, zaznaczamy go na czarno
i dodajemy do trasy. Proces ten powtarzamy dotąd, aż wszystkie węzły będą czarne. Kiedy
wszystkie węzły są już czarne, do trasy dodajemy ponownie punkt początkowy, aby
zamknąć cykl.
Na rysunku 16.6 pokazano rozwiązanie problemu komiwojażera za pomocą heurystyki
najbliższego sąsiada. Zwykle, kiedy rysujemy graf obrazujący problem komiwojażera, nie
pokazujemy krawędzi łączących poszczególne węzły, za to samym węzłom dodaje się
ich współrzędne. Linie przerywane na każdym etapie pokazują krawędzie, których długości
są porównywane. Najgrubsza linia jest dodawana do trasy. Uzyskana trasa w naszym wy-
padku ma długość 15,95 jednostki, zaś trasa optymalna 14,71, czyli jest o około 8% krótsza.
Heurystyka najbliższego sąsiada ma pewne interesujące właściwości. Tak jak w przypadku
innych algorytmów z tego rozdziału, jest on podobny do przeszukiwania wszerz, gdyż
badane są wszystkie węzły sąsiadujące z węzłem ostatnio dodanym do trasy. Opisywane
rozwiązanie jest algorytmem zachłannym, za każdym razem do trasy dodawany jest węzeł,
który w danej chwili najbardziej nam odpowiada. Niestety, wybór najbliższego sąsiada
może negatywnie wpłynąć na dobór dalszej części trasy. Niemniej, opisywany algorytm
zawsze zwraca trasę, której długość nie przekracza dwukrotnej długości trasy optymalnej,
poza tym zwykle uzyskiwany wynik jest lepszy. Istnieją też inne techniki pozwalające
poprawić uzyskiwany wynik. Jedną z nich jest stosowanie heurystyki wymiany (zobacz
tematy pokrewne na końcu tego rozdziału).
31. Interfejs problemu komiwojażera 459
Rysunek 16.6. Rozwiązywanie problemu komiwojażera za pomocą heurystyki najbliższego sąsiada
Interfejs problemu komiwojażera
tsp
int tsp(List *vertices, const TspVertex *start, List *tour, int (*match)
(const void *key1, const void *key2))
Zwracana wartość: 0, jeśli wyliczanie trasy komiwojażera się powiodło i –1 w przeciw-
nym razie.
Opis: Funkcja wylicza przybliżoną trasę komiwojażera przez punkty opisane jako węzły
w parametrze vertices. Trasa zaczyna się od węzła wskazanego jako start. Operacja
modyfikuje węzły vertices, więc w razie potrzeby, przed wywołaniem operacji, trzeba
zrobić kopię. Każdy element z vertices musi być typu TspVertex. W polu data struk-
tury TspVertex zapisuje się dane związane z węzłem, na przykład identyfikator. Elementy
32. 460 Rozdział 16. Algorytmy operujące na grafach
x i y struktury określają współrzędne węzła. Funkcja przekazana jako match decyduje, czy
dwa węzły pasują do siebie. Należy porównywać jedynie pola data struktur TspVertex.
Trasa jest zwracana jako tour — listę struktur TspVertex. Wszystkie węzły w tour
występują w takiej kolejności, w jakiej zostały odnalezione. Elementy z tour wskazują
węzły z vertices, więc trzeba zapewnić, że pamięć odpowiadająca vertices będzie
dostępna tak długo, jak długo będziemy korzystać z trasy tour; potem listę tę usuwa się za
pomocą operacji list_destroy.
Złożoność: O(V2), gdzie V jest liczbą węzłów odwiedzanych w trasie.
Implementacja problemu komiwojażera i analiza kodu
Aby rozwiązać problem komiwojażera, zaczynamy od zapisania grafu mającego postać listy
węzłów. Krawędzie łączące poszczególne węzły nie są zapamiętywane jawnie. Wszystkie
węzły z listy mają postać struktur TspVertex (listing 16.5). Struktura ta ma cztery pola:
data na dane węzła, x i y to współrzędne punktu odpowiadającego węzłowi, zaś color to
kolor węzła.
Listing 16.5. Implementacja problemu komiwojażera
/*****************************************************************************
* *
* --------------------------------- tsp.c -------------------------------- *
* *
*****************************************************************************/
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include "graph.h"
#include "graphalg.h"
#include "list.h"
/*****************************************************************************
* *
* ---------------------------------- tsp --------------------------------- *
* *
*****************************************************************************/
int tsp(List *vertices, const TspVertex *start, List *tour, int (*match)
(const void *key1, const void *key2)) {
TspVertex *tsp_vertex,
*tsp_start,
*selection;
ListElmt *element;
double minimum,
distance,
x,
y;
int found,
33. Implementacja problemu komiwojażera i analiza kodu 461
i;
/*****************************************************************************
* *
* Inicjalizacja listy na trasę. *
* *
*****************************************************************************/
list_init(tour, NULL);
/*****************************************************************************
* *
* Inicjalizacja wszystkich węzłów grafu. *
* *
*****************************************************************************/
found = 0;
for (element = list_head(vertices); element != NULL; element =
list_next(element)) {
tsp_vertex = list_data(element);
if (match(tsp_vertex, start)) {
/***********************************************************************
* *
* Początek trasy w węźle początkowym. *
* *
***********************************************************************/
if (list_ins_next(tour, list_tail(tour), tsp_vertex) != 0) {
list_destroy(tour);
return -1;
}
/***********************************************************************
* *
* Zapis węzła początkowego i jego współrzędnych. *
* *
***********************************************************************/
tsp_start = tsp_vertex;
x = tsp_vertex->x;
y = tsp_vertex->y;
/***********************************************************************
* *
* Zaczerniamy węzeł początkowy. *
* *
***********************************************************************/
tsp_vertex->color = black;
found = 1;
}
else {
/***********************************************************************