Nie ucz się C++ -- naucz się programować w C++
* C++ od najprzydatniejszych elementów, a nie od elementów najprostszych
* Rzeczywiste zadania i ich rozwiązania
* Opis C++ i biblioteki standardowej
* Książka sprawdzona w praktyce na Uniwersytecie Stanford
Książka ta ma pomóc Czytelnikowi w szybkim nauczeniu się języka C++ poprzez pisanie w nim przydatnych programów. Ta strategia wydaje się oczywista, jednak jest odmienna od powszechnie przyjętej metodologii nauczania. Autorzy nie będą uczyć Cię języka C, choć wielu uważa, że jest to niezbędne. W prezentowanych przykładach od razu wykorzystane zostaną wysokopoziomowe struktury, a prezentacja sposobu ich zastosowania będzie często wyprzedzać omówienie ich fundamentów. Dzięki takiemu podejściu zaczniesz szybko pisać programy wykorzystujące idiomy C++.
Zastosowany w książce schemat autorzy wypróbowali podczas kursów prowadzonych na Uniwersytecie Stanforda, na których studenci uczą się pisać programy już na pierwszych zajęciach.
Poznaj:
* Podstawowe cechy C++
* Operacje na ciągach
* Pętle i liczniki
* Przetwarzanie danych "porcja po porcji"
* Organizację programów i danych
* Kontenery sekwencyjne i analiza ciągów tekstowych
* Algorytmy biblioteki standardowej
* Kontenery asocjacyjne
* Funkcje uogólnione i definiowanie własnych typów
* Zarządzanie pamięcią i niskopoziomowymi strukturami danych
* Półautomatyczne zarządzanie pamięcią
* Programowanie zorientowane obiektowo
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...]
Gotowe rozwiązania i przykłady dla użytkowników Flasha
Zamiast koncentrować się na abstrakcyjnych niuansach języka ActionScript, można skorzystać z gotowych sposobów rozwiązywania typowych problemów. Receptury ułatwiają pisanie skryptów w języku ActionScript, ucząc przy tym praktycznych technik, które na pewno będą przydatne jeszcze wiele razy.
Ogrom możliwości języka ActionScript może przytłaczać. W niniejszej książce analizujemy zaawansowane technologie jako zespoły prostych czynności, z których każda ma praktyczne znaczenie i z których każdą warto zrozumieć. Książka "ActionScript. Receptury" jest interesująca zarówno dla młodego kodera, jak i dla doświadczonego programisty, ponieważ pozwala spojrzeć z nowej perspektywy i podejść w nowy sposób do zagadnień programowania w języku ActionScript, jednocześnie umożliwiając ugruntowanie zdobytych już umiejętności.
Książka "ActionScript. Receptury" zawiera ponad 300 receptur związanych z niezliczoną ilością tematów, wśród których znajdują się m.in.:
* rysowanie kształtów za pomocą instrukcji skryptów;
* programistyczne sterowanie odtwarzaniem klipów filmowych;
* obsługa wprowadzania tekstu i operacje na łańcuchach znaków;
* udostępnianie strumieni audio i wideo dzięki technologii Flash Communication Server;
* wykorzystanie technologii Flash Remoting do tworzenia połączeń z zapleczem bazodanowym;
* posługiwanie się zestawami rekordów i macierzami danych;
* wiele, wiele innych rozwiązań w 20 pełnych receptur rozdziałach.
Na początku książki omówione są krótkie, proste receptury. Później, stopniowo, pojawiają się dłuższe i bardziej skomplikowane skrypty wykonujące coraz bardziej wymyślne zadania. Taki układ wiedzy umożliwia łączenie poznanych skryptów w rozwiązania, na których można oprzeć swoje aplikacje utworzone we Flashu. Miła niespodzianka czeka i tego, kto nad jednostkowe receptury wyżej ceni duże aplikacje: w książce opisano siedem kompletnych, złożonych projektów we Flashu.
Przystępny kurs programowania dla wszystkich
* Poznaj najpopularniejsze języki programowania
* Zorganizuj sobie pracę przy tworzeniu aplikacji
* Napisz własny program
* Przetestuj aplikacje i usuń błędy
Mimo dynamicznego rozwoju informatyki wśród większości użytkowników komputerów nadal istnieje przekonanie, że programowanie jest zajęciem dla wybrańców posiadających ogromną i niemal tajemną wiedzę. Tymczasem pisanie programów to umiejętność, którą może opanować każdy. Oczywiście nauka programowania wymaga poznania wielu zagadnień teoretycznych i praktycznych, ale nie wymaga od osoby uczącej się żadnych niezwykłych umiejętności. Każdy może poznać zasady pisania programów, zarówno dla celów hobbystycznych, jak i zawodowych.
Książka "Programowanie. Od podstaw" to podręcznik programowania przeznaczony dla osób, które dopiero rozpoczynają swoją komputerową przygodę. Zawiera uniwersalne wiadomości przydatne każdemu programiście niezależnie od tego, co i w jakim języku będzie tworzyć. Czytając ją, poznasz wady i zalety różnych języków programowania, sposoby realizacji typowych zadań programistycznych i metody testowania aplikacji. Dowiesz się, jak komputery przechowują informacje, jakie systemy liczbowe wykorzystuje się w programowaniu i jakie narzędzia będą Ci potrzebne podczas pracy. Zdobędziesz solidne podstawy, które pozwolą Ci na dalsze rozwijanie swoich umiejętności.
* Sposób interpretacji kodu źródłowego przez komputer
* System binarny i szesnastkowy
* Warsztat pracy programisty
* Komentarze w kodach programów
* Definiowanie zmiennych
* Instrukcje warunkowe
* Testowanie i usuwanie błędów
* Projektowanie interfejsów użytkownika
* Operacje na plikach
* Wykorzystywanie rejestru Windows
* Zarządzanie wersjami kodu
* Kompilacja
Przekonaj się, że programowanie nie jest trudne.
Programowanie w języku C jest czymś więcej niż tylko wprowadzaniem kodu zgodnego z regułami składni; styl i wykrywanie błędów odgrywają równie istotną rolę w procesie tworzenia oprogramowania. Istotnie przyczyniają się do prawidłowego działania programów oraz ułatwiają ich konserwację. W książce omówiono więc nie tylko działanie języka C, ale również cały proces tworzenia programu w tym języku (uwzględniając założenia projektowe programu, kodowanie, metody wykrywania błędów, dokumentację, konserwację oraz aktualizację).
Wbrew powszechnemu przekonaniu większość programistów nie spędza całego swojego czasu przy pisaniu kodu. Poświęcają oni wiele czasu na wprowadzanie zmian i poprawek do aplikacji napisanych przez kogoś innego. Po przeczytaniu tej książki będziesz w stanie tworzyć programy, z którymi inni programiści nie będą musieli staczać bojów. Posiądziesz również umiejętność analizowania kodu napisanego przez innego programistę.
Książka "Język C. Programowanie" omawia także popularne zintegrowane środowiska programistyczne dla systemu Windows (Borland C++, Turbo C++ oraz Microsoft Visual C++) oraz narzędzia programistyczne dla systemu UNIX (cc i gcc). Zawarto w niej również kod programu generującego statystyki, który ma za zadanie zademonstrowanie zagadnień omówionych w książce. Książka jest przeznaczona dla osób, które nie miały dotąd doświadczenia w programowaniu oraz dla programistów znających już język C, a pragnących poprawić swój styl i czytelność tworzonego kodu. Jeśli chcesz sprawnie posługiwać się C, "Język C. Programowanie" to idealny podręcznik dla Ciebie.
Zakładając znajomość podstaw języka C++ książka ta umożliwia programistom rozwinięcie zaawansowanych umiejętności programowania poprzez stosowanie styli i idiomów języka C++. Struktura książki zorganizowana jest wokół abstrakcji wspieranych przez język C++: abstrakcyjnych typów danych, kombinacji typów w strukturach dziedziczenia, programowania obiektowego i dziedziczenia wielokrotnego. W książce przedstawione zostają także te idiomy, które nie znajdują bezpośredniego wsparcia w języku C++, takie jak wirtualne konstruktory, obiekty prototypów i zaawansowane techniki odzyskiwania nieużytków.
Książka:
* Przedstawia zalety i potencjalne pułapki zaawansowanych technik programowania w języku C++.
* Sposoby efektywnego łączenia abstrakcji języka C++ ilustruje szeregiem krótkich, ale stanowiących wystarczający instruktaż przykładów.
* Dostarcza wielu praktycznych zasad wykorzystania języka C++ do implementacji rezultatów projektowania obiektowego.
* Omawia wszystkie właściwości edycji 3.0 języka C++, w tym zastosowanie szablonów w celu wielokrotnego wykorzystania kodu.
* Przedstawia istotne aspekty rozwoju złożonych systemów, w tym projektowanie bibliotek, obsługę wyjątków i przetwarzanie rozproszone.
Książka ta jest ważnym podręcznikiem dla każdego programisty aplikacji lub programisty systemowego posługującego się językiem C++.
O autorze:
James Coplien pracuje w departamencie związanym z badaniami nad produkcją oprogramowania w firmie AT&T Bell Laboratories. Jest także konsultantem przy dużych projektach wykorzystujących technologie obiektowe.
[więcej...]
C++ jest obecnie wiodącym językiem programowania obiektowego. Jego podstawowymi zaletami w stosunku do innych języków obiektowych jest wysoka efektywność i uniwersalność. Stosowany jest do tworzenia komercyjnego oprogramowania oraz efektywnych rozwiązań złożonych problemów.
Książka krok po kroku omawia wszystkie właściwości języka i wyjaśnia sposoby ich praktycznego użycia. Przedstawione przykłady programów nie są zbyt skomplikowane, by nie odrywać Twojej uwagi od omawianych zagadnień, ale nie są też sztucznie uproszczone. Kluczowym założeniem języka C++ jest programowanie z wykorzystaniem szablonów, które umożliwiają tworzenie rozwiązań o wysokim poziomie ogólności - na przykład implementację polimorfizmu. Nicolai Josuttis omawia możliwość łączenia szablonów z programowaniem obiektowym, która decyduje o potężnych możliwościach języka C++ jako narzędzia tworzenia wydajnych programów. W tym zakresie książka wykracza daleko poza podstawy.
* Wprowadzenie do C++ i programowania obiektowego
* Podstawowe pojęcia języka C++
* Programowanie klas
* Dziedziczenie i polimorfizm
* Składowe dynamiczne i statyczne
* Szablony języka C++
* Szczegółowe omówienie standardowej biblioteki wejścia-wyjścia
Książka ta jest idealnym podręcznikiem umożliwiającym studiowanie języka C++ w domowym zaciszu. Prezentuje ona zagadnienia podstawowe, ale w wielu przypadkach przekracza je dostarczając prawdziwie profesjonalnej wiedzy.
Wyczerpujący, szczegółowy, praktyczny i aktualny podręcznik programowania w języku C++
Poznanie istoty programowania komputerów można zacząć od analizy języków programowania, ich struktur, typów danych i instrukcji. Jednak mnogość języków, różnice pomiędzy nimi i możliwość wykorzystania ich do różnych zadań sprawiają, że przeprowadzenie takiej analizy będzie niezwykle czasochłonne, a jednocześnie nie będzie gwarantowało poznania wszystkich koncepcji i paradygmatów programowania. Naukę koncepcji programowania najlepiej rozpocząć od poznania modelowych struktur realizowanych za pomocą modeli obliczeniowych -- konstrukcji definiujących sposób realizacji obliczeń, nie powołujących się na konkretny język.
Książka "Programowanie. Koncepcje, techniki i modele" prezentuje programowanie jako zbiór takich właśnie modeli. Opisuje je w postaci kodów stworzonych w prostym języku podstawowym przeznaczonym dla abstrakcyjnego komputera. W książce przedstawiono zarówno modele ogólne -- programowanie deklaratywne, współbieżność deklaratywną, współbieżność przesyłania komunikatów, stan jawny, programowanie zorientowane obiektowo, współbieżność stanu dzielonego oraz programowanie relacyjne -- jak i modele specjalizowane, takie jak programowanie graficznych interfejsów użytkownika, programowanie rozproszone oraz programowanie z ograniczeniami. Publikacja zawiera wiele fragmentów programów i ćwiczeń. Można je uruchomić w ramach systemu Mozart Programming System -- pakietu programistycznego rozprowadzanego na licencji open source.
* Podstawowe założenia problematyki programowania
* Notacja Backusa-Naura
* Gramatyki kontekstowe i bezkontekstowe
* Zasada działania maszyny abstrakcyjnej
* Typy danych, instrukcje i funkcje
* Drzewa i analiza składniowa
* Metodologie projektowania programów
* Programowanie współbieżne
* Zasady projektowanie i programowanie obiektowego
* Projektowanie interfejsów użytkownika
* Obliczenia rozproszone
Pisanie niezawodnych programów wymaga opanowania koncepcji leżących u ich podstaw. Dzięki tej książce poznasz je wszystkie.
Rozpocznij przygodę z programowaniem
* Poznaj elementy języka C++.
* Naucz się przetwarzać dane tekstowe i liczbowe.
* Opanuj zasady programowania obiektowego.
C++ to język programowania wykorzystywany do wielu zadań. Programiści stosują go do tworzenia aplikacji użytkowych, gier, a nawet części systemów operacyjnych. Może więc wydawać się, że opanowanie zasad programowania w tym języku przekracza możliwości przeciętnego człowieka. Tak jednak nie jest -- programowanie to nie wiedza tajemna, dostępna jedynie dla wybranych, a programiści znający C++ nie są nadludźmi. Z odpowiednią pomocą można bez kłopotów zdobyć wiedzę o wszystkich sztuczkach i ciekawostkach C++, a nauka programowania w tym języku nie powinna sprawić Ci problemów.
Książka "C++ bez obaw" może być Twoim asystentem, gdy będziesz się uczył programowania w języku C++. Dzięki niej przekonasz się, że opanowanie tej sztuki leży w Twoim zasięgu. Znajdziesz w niej omówienie elementów C++ zilustrowane praktycznymi przykładami. Dowiesz się, z czego zbudowany jest program w C++ i jak sprawić, aby kod źródłowy stał się aplikacją możliwą do uruchomienia na Twoim komputerze. Przeczytasz o przetwarzaniu danych, operacjach na plikach, sortowaniu, obliczeniach matematycznych i programowaniu obiektowym. Poznasz wiele przydatnych zagadnień związanych z tworzeniem oprogramowania.
* Struktura programu w C++
* Wyświetlanie danych na ekranie
* Typy danych
* Pętle i instrukcje warunkowe
* Korzystanie ze wskaźników
* Operacje na plikach
* Programowanie obiektowe
Poszerz swoje możliwości, programuj w języku C++
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązańWydawnictwo Helion
Poznaj skuteczne rozwiązania problemów, jakie napotkasz podczas codziennej pracy programisty
* Prawidłowo zoptymalizuj kod źródłowy
* Zaprojektuj efektywną obsługę wyjątków
* Naucz się odpowiednio korzystać z przestrzeni nazw
Nauka każdego nowego zagadnienia przebiega zdecydowanie szybciej i efektywniej pod kierunkiem osoby znającej temat. Nie inaczej jest w przypadku nauki programowania w języku C++. Programowanie w tym języku wymaga dogłębnego opanowania możliwości biblioteki standardowej, inżynierii oprogramowania i wielu innych tematów. Rozwiązując samodzielnie zagadki, jakie często pojawiają się podczas poznawania języka C++ lepiej zapamiętujemy ich rozwiązania, dzięki czemu łatwiej możemy zastosować je w codziennej pracy.
Książka "Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań" to zbiór zagadnień związanych z niemal wszystkimi aspektami programowania w C++, przedstawionych w formie zagadek z rozwiązaniami. Opisuje zarówno podstawy stosowania szablonów, biblioteki standardowej i projektowanie klas, jak i tematy zaawansowane -- przestrzenie nazw, wyjątki, dziedziczenie i zarządzanie zasobami. Czytając ją, przekonasz się, w jaki sposób można użyć pozornie niezwiązanych ze sobą elementów do opracowania nowych i oryginalnych rozwiązań częstych problemów.
* Poprawne stosowanie predykatów
* Kontenery i wskaźniki
* Korzystanie z szablonów
* Optymalizacja kodu
* Bezpieczna obsługa wyjątków
* Mechanizmy dziedziczenia i polimorfizmu
* Zarządzanie zasobami i pamięcią
* Makrodefinicje
* Przestrzenie nazw
Gdy zrozumiesz zagadnienia opisywane w tej książce, nie będziesz musiał podczas programowania zastanawiać się nad szczegółami -- będziesz mógł skoncentrować się na problemach, które naprawdę chcesz rozwiązać.
O autorze:
Herb Sutter to ekspert od programowania w języku C++. Jest regularnie zapraszany do wygłaszania wykładów na konferencjach dla programistów.
[więcej...]
Gotowe rozwiązania i przykłady dla użytkowników Flasha
Zamiast koncentrować się na abstrakcyjnych niuansach języka ActionScript, można skorzystać z gotowych sposobów rozwiązywania typowych problemów. Receptury ułatwiają pisanie skryptów w języku ActionScript, ucząc przy tym praktycznych technik, które na pewno będą przydatne jeszcze wiele razy.
Ogrom możliwości języka ActionScript może przytłaczać. W niniejszej książce analizujemy zaawansowane technologie jako zespoły prostych czynności, z których każda ma praktyczne znaczenie i z których każdą warto zrozumieć. Książka "ActionScript. Receptury" jest interesująca zarówno dla młodego kodera, jak i dla doświadczonego programisty, ponieważ pozwala spojrzeć z nowej perspektywy i podejść w nowy sposób do zagadnień programowania w języku ActionScript, jednocześnie umożliwiając ugruntowanie zdobytych już umiejętności.
Książka "ActionScript. Receptury" zawiera ponad 300 receptur związanych z niezliczoną ilością tematów, wśród których znajdują się m.in.:
* rysowanie kształtów za pomocą instrukcji skryptów;
* programistyczne sterowanie odtwarzaniem klipów filmowych;
* obsługa wprowadzania tekstu i operacje na łańcuchach znaków;
* udostępnianie strumieni audio i wideo dzięki technologii Flash Communication Server;
* wykorzystanie technologii Flash Remoting do tworzenia połączeń z zapleczem bazodanowym;
* posługiwanie się zestawami rekordów i macierzami danych;
* wiele, wiele innych rozwiązań w 20 pełnych receptur rozdziałach.
Na początku książki omówione są krótkie, proste receptury. Później, stopniowo, pojawiają się dłuższe i bardziej skomplikowane skrypty wykonujące coraz bardziej wymyślne zadania. Taki układ wiedzy umożliwia łączenie poznanych skryptów w rozwiązania, na których można oprzeć swoje aplikacje utworzone we Flashu. Miła niespodzianka czeka i tego, kto nad jednostkowe receptury wyżej ceni duże aplikacje: w książce opisano siedem kompletnych, złożonych projektów we Flashu.
Przystępny kurs programowania dla wszystkich
* Poznaj najpopularniejsze języki programowania
* Zorganizuj sobie pracę przy tworzeniu aplikacji
* Napisz własny program
* Przetestuj aplikacje i usuń błędy
Mimo dynamicznego rozwoju informatyki wśród większości użytkowników komputerów nadal istnieje przekonanie, że programowanie jest zajęciem dla wybrańców posiadających ogromną i niemal tajemną wiedzę. Tymczasem pisanie programów to umiejętność, którą może opanować każdy. Oczywiście nauka programowania wymaga poznania wielu zagadnień teoretycznych i praktycznych, ale nie wymaga od osoby uczącej się żadnych niezwykłych umiejętności. Każdy może poznać zasady pisania programów, zarówno dla celów hobbystycznych, jak i zawodowych.
Książka "Programowanie. Od podstaw" to podręcznik programowania przeznaczony dla osób, które dopiero rozpoczynają swoją komputerową przygodę. Zawiera uniwersalne wiadomości przydatne każdemu programiście niezależnie od tego, co i w jakim języku będzie tworzyć. Czytając ją, poznasz wady i zalety różnych języków programowania, sposoby realizacji typowych zadań programistycznych i metody testowania aplikacji. Dowiesz się, jak komputery przechowują informacje, jakie systemy liczbowe wykorzystuje się w programowaniu i jakie narzędzia będą Ci potrzebne podczas pracy. Zdobędziesz solidne podstawy, które pozwolą Ci na dalsze rozwijanie swoich umiejętności.
* Sposób interpretacji kodu źródłowego przez komputer
* System binarny i szesnastkowy
* Warsztat pracy programisty
* Komentarze w kodach programów
* Definiowanie zmiennych
* Instrukcje warunkowe
* Testowanie i usuwanie błędów
* Projektowanie interfejsów użytkownika
* Operacje na plikach
* Wykorzystywanie rejestru Windows
* Zarządzanie wersjami kodu
* Kompilacja
Przekonaj się, że programowanie nie jest trudne.
Programowanie w języku C jest czymś więcej niż tylko wprowadzaniem kodu zgodnego z regułami składni; styl i wykrywanie błędów odgrywają równie istotną rolę w procesie tworzenia oprogramowania. Istotnie przyczyniają się do prawidłowego działania programów oraz ułatwiają ich konserwację. W książce omówiono więc nie tylko działanie języka C, ale również cały proces tworzenia programu w tym języku (uwzględniając założenia projektowe programu, kodowanie, metody wykrywania błędów, dokumentację, konserwację oraz aktualizację).
Wbrew powszechnemu przekonaniu większość programistów nie spędza całego swojego czasu przy pisaniu kodu. Poświęcają oni wiele czasu na wprowadzanie zmian i poprawek do aplikacji napisanych przez kogoś innego. Po przeczytaniu tej książki będziesz w stanie tworzyć programy, z którymi inni programiści nie będą musieli staczać bojów. Posiądziesz również umiejętność analizowania kodu napisanego przez innego programistę.
Książka "Język C. Programowanie" omawia także popularne zintegrowane środowiska programistyczne dla systemu Windows (Borland C++, Turbo C++ oraz Microsoft Visual C++) oraz narzędzia programistyczne dla systemu UNIX (cc i gcc). Zawarto w niej również kod programu generującego statystyki, który ma za zadanie zademonstrowanie zagadnień omówionych w książce. Książka jest przeznaczona dla osób, które nie miały dotąd doświadczenia w programowaniu oraz dla programistów znających już język C, a pragnących poprawić swój styl i czytelność tworzonego kodu. Jeśli chcesz sprawnie posługiwać się C, "Język C. Programowanie" to idealny podręcznik dla Ciebie.
Zakładając znajomość podstaw języka C++ książka ta umożliwia programistom rozwinięcie zaawansowanych umiejętności programowania poprzez stosowanie styli i idiomów języka C++. Struktura książki zorganizowana jest wokół abstrakcji wspieranych przez język C++: abstrakcyjnych typów danych, kombinacji typów w strukturach dziedziczenia, programowania obiektowego i dziedziczenia wielokrotnego. W książce przedstawione zostają także te idiomy, które nie znajdują bezpośredniego wsparcia w języku C++, takie jak wirtualne konstruktory, obiekty prototypów i zaawansowane techniki odzyskiwania nieużytków.
Książka:
* Przedstawia zalety i potencjalne pułapki zaawansowanych technik programowania w języku C++.
* Sposoby efektywnego łączenia abstrakcji języka C++ ilustruje szeregiem krótkich, ale stanowiących wystarczający instruktaż przykładów.
* Dostarcza wielu praktycznych zasad wykorzystania języka C++ do implementacji rezultatów projektowania obiektowego.
* Omawia wszystkie właściwości edycji 3.0 języka C++, w tym zastosowanie szablonów w celu wielokrotnego wykorzystania kodu.
* Przedstawia istotne aspekty rozwoju złożonych systemów, w tym projektowanie bibliotek, obsługę wyjątków i przetwarzanie rozproszone.
Książka ta jest ważnym podręcznikiem dla każdego programisty aplikacji lub programisty systemowego posługującego się językiem C++.
O autorze:
James Coplien pracuje w departamencie związanym z badaniami nad produkcją oprogramowania w firmie AT&T Bell Laboratories. Jest także konsultantem przy dużych projektach wykorzystujących technologie obiektowe.
[więcej...]
C++ jest obecnie wiodącym językiem programowania obiektowego. Jego podstawowymi zaletami w stosunku do innych języków obiektowych jest wysoka efektywność i uniwersalność. Stosowany jest do tworzenia komercyjnego oprogramowania oraz efektywnych rozwiązań złożonych problemów.
Książka krok po kroku omawia wszystkie właściwości języka i wyjaśnia sposoby ich praktycznego użycia. Przedstawione przykłady programów nie są zbyt skomplikowane, by nie odrywać Twojej uwagi od omawianych zagadnień, ale nie są też sztucznie uproszczone. Kluczowym założeniem języka C++ jest programowanie z wykorzystaniem szablonów, które umożliwiają tworzenie rozwiązań o wysokim poziomie ogólności - na przykład implementację polimorfizmu. Nicolai Josuttis omawia możliwość łączenia szablonów z programowaniem obiektowym, która decyduje o potężnych możliwościach języka C++ jako narzędzia tworzenia wydajnych programów. W tym zakresie książka wykracza daleko poza podstawy.
* Wprowadzenie do C++ i programowania obiektowego
* Podstawowe pojęcia języka C++
* Programowanie klas
* Dziedziczenie i polimorfizm
* Składowe dynamiczne i statyczne
* Szablony języka C++
* Szczegółowe omówienie standardowej biblioteki wejścia-wyjścia
Książka ta jest idealnym podręcznikiem umożliwiającym studiowanie języka C++ w domowym zaciszu. Prezentuje ona zagadnienia podstawowe, ale w wielu przypadkach przekracza je dostarczając prawdziwie profesjonalnej wiedzy.
Wyczerpujący, szczegółowy, praktyczny i aktualny podręcznik programowania w języku C++
Poznanie istoty programowania komputerów można zacząć od analizy języków programowania, ich struktur, typów danych i instrukcji. Jednak mnogość języków, różnice pomiędzy nimi i możliwość wykorzystania ich do różnych zadań sprawiają, że przeprowadzenie takiej analizy będzie niezwykle czasochłonne, a jednocześnie nie będzie gwarantowało poznania wszystkich koncepcji i paradygmatów programowania. Naukę koncepcji programowania najlepiej rozpocząć od poznania modelowych struktur realizowanych za pomocą modeli obliczeniowych -- konstrukcji definiujących sposób realizacji obliczeń, nie powołujących się na konkretny język.
Książka "Programowanie. Koncepcje, techniki i modele" prezentuje programowanie jako zbiór takich właśnie modeli. Opisuje je w postaci kodów stworzonych w prostym języku podstawowym przeznaczonym dla abstrakcyjnego komputera. W książce przedstawiono zarówno modele ogólne -- programowanie deklaratywne, współbieżność deklaratywną, współbieżność przesyłania komunikatów, stan jawny, programowanie zorientowane obiektowo, współbieżność stanu dzielonego oraz programowanie relacyjne -- jak i modele specjalizowane, takie jak programowanie graficznych interfejsów użytkownika, programowanie rozproszone oraz programowanie z ograniczeniami. Publikacja zawiera wiele fragmentów programów i ćwiczeń. Można je uruchomić w ramach systemu Mozart Programming System -- pakietu programistycznego rozprowadzanego na licencji open source.
* Podstawowe założenia problematyki programowania
* Notacja Backusa-Naura
* Gramatyki kontekstowe i bezkontekstowe
* Zasada działania maszyny abstrakcyjnej
* Typy danych, instrukcje i funkcje
* Drzewa i analiza składniowa
* Metodologie projektowania programów
* Programowanie współbieżne
* Zasady projektowanie i programowanie obiektowego
* Projektowanie interfejsów użytkownika
* Obliczenia rozproszone
Pisanie niezawodnych programów wymaga opanowania koncepcji leżących u ich podstaw. Dzięki tej książce poznasz je wszystkie.
Rozpocznij przygodę z programowaniem
* Poznaj elementy języka C++.
* Naucz się przetwarzać dane tekstowe i liczbowe.
* Opanuj zasady programowania obiektowego.
C++ to język programowania wykorzystywany do wielu zadań. Programiści stosują go do tworzenia aplikacji użytkowych, gier, a nawet części systemów operacyjnych. Może więc wydawać się, że opanowanie zasad programowania w tym języku przekracza możliwości przeciętnego człowieka. Tak jednak nie jest -- programowanie to nie wiedza tajemna, dostępna jedynie dla wybranych, a programiści znający C++ nie są nadludźmi. Z odpowiednią pomocą można bez kłopotów zdobyć wiedzę o wszystkich sztuczkach i ciekawostkach C++, a nauka programowania w tym języku nie powinna sprawić Ci problemów.
Książka "C++ bez obaw" może być Twoim asystentem, gdy będziesz się uczył programowania w języku C++. Dzięki niej przekonasz się, że opanowanie tej sztuki leży w Twoim zasięgu. Znajdziesz w niej omówienie elementów C++ zilustrowane praktycznymi przykładami. Dowiesz się, z czego zbudowany jest program w C++ i jak sprawić, aby kod źródłowy stał się aplikacją możliwą do uruchomienia na Twoim komputerze. Przeczytasz o przetwarzaniu danych, operacjach na plikach, sortowaniu, obliczeniach matematycznych i programowaniu obiektowym. Poznasz wiele przydatnych zagadnień związanych z tworzeniem oprogramowania.
* Struktura programu w C++
* Wyświetlanie danych na ekranie
* Typy danych
* Pętle i instrukcje warunkowe
* Korzystanie ze wskaźników
* Operacje na plikach
* Programowanie obiektowe
Poszerz swoje możliwości, programuj w języku C++
Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązańWydawnictwo Helion
Poznaj skuteczne rozwiązania problemów, jakie napotkasz podczas codziennej pracy programisty
* Prawidłowo zoptymalizuj kod źródłowy
* Zaprojektuj efektywną obsługę wyjątków
* Naucz się odpowiednio korzystać z przestrzeni nazw
Nauka każdego nowego zagadnienia przebiega zdecydowanie szybciej i efektywniej pod kierunkiem osoby znającej temat. Nie inaczej jest w przypadku nauki programowania w języku C++. Programowanie w tym języku wymaga dogłębnego opanowania możliwości biblioteki standardowej, inżynierii oprogramowania i wielu innych tematów. Rozwiązując samodzielnie zagadki, jakie często pojawiają się podczas poznawania języka C++ lepiej zapamiętujemy ich rozwiązania, dzięki czemu łatwiej możemy zastosować je w codziennej pracy.
Książka "Wyjątkowy język C++. 40 nowych łamigłówek, zadań programistycznych i rozwiązań" to zbiór zagadnień związanych z niemal wszystkimi aspektami programowania w C++, przedstawionych w formie zagadek z rozwiązaniami. Opisuje zarówno podstawy stosowania szablonów, biblioteki standardowej i projektowanie klas, jak i tematy zaawansowane -- przestrzenie nazw, wyjątki, dziedziczenie i zarządzanie zasobami. Czytając ją, przekonasz się, w jaki sposób można użyć pozornie niezwiązanych ze sobą elementów do opracowania nowych i oryginalnych rozwiązań częstych problemów.
* Poprawne stosowanie predykatów
* Kontenery i wskaźniki
* Korzystanie z szablonów
* Optymalizacja kodu
* Bezpieczna obsługa wyjątków
* Mechanizmy dziedziczenia i polimorfizmu
* Zarządzanie zasobami i pamięcią
* Makrodefinicje
* Przestrzenie nazw
Gdy zrozumiesz zagadnienia opisywane w tej książce, nie będziesz musiał podczas programowania zastanawiać się nad szczegółami -- będziesz mógł skoncentrować się na problemach, które naprawdę chcesz rozwiązać.
O autorze:
Herb Sutter to ekspert od programowania w języku C++. Jest regularnie zapraszany do wygłaszania wykładów na konferencjach dla programistów.
[więcej...]
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
Szkoła programowania Bruce’a Eckela!
Podczas nauki tworzenia aplikacji w języku C++ towarzyszyć Ci będzie jeden z najlepszych dydaktyków programowania na świecie!
Nauka języka C++ i szczegółowe poznanie jego możliwości to poważne wyzwanie nie tylko dla początkującego, ale również dla zaawansowanego programisty. W książce "Thinking in C++. Edycja polska" Bruce Eckel w doskonały sposób przedstawił podstawowe zagadnienia związane z tym językiem. Jeśli opanowałeś materiał z tej książki, możesz rozpocząć lekturę drugiego tomu.
Następnym krokiem jest -- "Thinking in C++. Edycja polska. Tom II" -- kolejny bestseller Bruce’a Eckela poświęcony językowi C++. Tym razem Bruce w typowy dla siebie, prosty i zrozumiały sposób opisuje zaawansowane aspekty programowania w C++. Dowiesz się, jak korzystać z referencji, przeciążania operatorów, dziedziczenia i obiektów dynamicznych, a także poznasz zagadnienia zaawansowane -- prawidłowe użycie szablonów, wyjątków i wielokrotnego dziedziczenia. Wszystkie tematy opatrzone są ćwiczeniami.
* obsługa wyjątków
* programowanie defensywne
* standardowa biblioteka C++
* strumienie wejścia-wyjścia
* wzorce projektowe
* zaawansowane metody programowania obiektowego
* współbieżność
Kody źródłowe znajdujące się w książce są zgodne z wieloma kompilatorami C++.
O autorach:
Bruce Eckel jest prezesem MindView, Inc., firmy prowadzącej zarówno otwarte jak i zamknięte kursy treningowe; zajmującej się też doradztwem, nadzorem i kontrolą nad projektami związanymi z technologiami obiektowymi i wzorcami projektowymi. [więcej...]
Chuck Allison jest matematykiem, pełniącym obecnie funkcję wykładowcy na wydziale informatyki uniwersytetu stanowego Utah Valley. Do niedawna pełnił funkcję redaktora w magazynie C/C++ Users Journal. [więcej...]
Błyskawiczny kurs tworzenia aplikacji WWW w języku C#
C# to całkiem nowy język programowania zaprojektowany przez firmę Microsoft. Wygląda on jak mieszanka C++ i Javy, jest jednak tak prosty jak Visual Basic. Z jego pomocą można tworzyć aplikacje WWW i programy wyposażone w graficzny interfejs użytkownika. Język ten związany jest z platformą .NET, umożliwiającą tworzenie zaawansowanych aplikacji biznesowych działających w środowisku sieciowym, w tym także z technologią budowania dynamicznych serwisów internetowych ASP.NET. Programy działające na platformie .NET można pisać w wielu językach programowania, ale wiele wskazuje na to, że właśnie C# stanie się najpopularniejszym z nich.
Książka "C# i ASP.NET. Szybki start" jest doskonałym podręcznikiem dla początkujących programistów. Jak każda pozycja z serii "Szybki start", składa się z kilkudziesięciu rozdziałów, z których każdy przedstawia kolejne kroki, które należy wykonać, by osiągnąć zamierzony cel. Dodatkową zaletę stanowią liczne ilustracje.
Opisano między innymi:
* Instalację niezbędnego oprogramowania
* Składniki języka C#
* Instrukcje warunkowe i pętle
* Pracę z ciągami znaków
* Programowanie obiektowe w C#
* Korzystanie z tablic i kolekcji
* Delegaty, zdarzenie, obsługę błędów
* Tworzenie dynamicznych serwisów WWW w języku C#
Programista chcący tworzyć zaawansowane aplikacje internetowe ma wybór pomiędzy dwoma platformami: Java 2 EE Suna i .NET Microsoftu. Jeśli wybierze tę drugą, dzięki książce "C# i ASP.NET. Szybki start" szybko będzie mógł tworzyć funkcjonalne aplikacje WWW w nowym, ekscytującym języku C#.
Cg to kompletne środowisko programistyczne do szybkiego tworzenia efektów specjalnych i grafiki o kinowej jakości w czasie rzeczywistym dla wielu platform. Ponieważ język jest niezależny od sprzętu, programiści mogą pisać kod dla interfejsów OpenGL, DirectX oraz systemów Windows, Linux, Mac OS X, a także platform konsolowych, (Xbox) bez potrzeby korzystania z języka asemblerowego. Język Cg powstał w firmie NVIDIA Corporation przy bliskiej współpracy z firmą Microsoft® Corporation i jest kompatybilny z OpenGL API oraz językiem HLSL dla biblioteki DirectX 9.
Książka jest podręcznikiem przeznaczonym dla średnio zaawansowanych programistów. Opisuje ona zarówno sam język programowania Cg, jak i metody wielu składników nowoczesnych aplikacji bazujących na grafice trójwymiarowej.
Prezentowane w książce zagadnienia to m.in.:
* Historia języka Cg
* Środowisko programistyczne Cg
* Składnia Cg i słowa kluczowe
* Przekształcenia w przestrzeni trójwymiarowej
* Oświetlenie bazujące na wierzchołkach i pikselach
* Interpolacja ujęć kluczowych i system kości
* Mapowanie środowiska
* Mapowanie nierówności
* Mgła, światła reflektorowe, cienie
* Zwiększanie wydajności
"Książka ważna i na czasie: tworzenie tekstur proceduralnych na poziomie pikseli -- animowanych chmur, ognia, wody i wielu innych sztuczek -- nareszcie z ekranów kin przechodzi pod strzechy. Cała moc jest dostępna dzięki językowi przypominającemu język C, co otwiera nowy rozdział w grafice komputerowej.
Ken Perlin, Uniwersytet w Nowym Jorku
Poznaj możliwości i mechanizmy C++ stosowane przez profesjonalistów
* Efektywne zarządzanie pamięcią
* Obsługa błędów
* Biblioteki i wzorce projektowe
Język C++ od dawna cieszy się zasłużoną popularnością wśród twórców oprogramowania. Jednak często nawet najbardziej doświadczeni programiści nie wykorzystują wszystkich jego możliwości. W opracowaniach dotyczących tego języka najczęściej omawiana jest składnia i elementy języka, a znacznie rzadziej -- jego praktyczne zastosowania. Brak odniesień do praktyki powoduje nieznajomość wielu niezwykle przydatnych i ułatwiających pracę aspektów C++ i nadmierne eksploatowanie prostych, książkowych konstrukcji.
Książka "C++. Zaawansowane programowanie" to przegląd metod programowania nie omawianych w większości publikacji. Ten przeznaczony dla średnio zaawansowanych programistów podręcznik przedstawia zasady stosowania C++ do rozwiązywania prawdziwych problemów. Opisuje nieznane możliwości znacznie przyspieszające i usprawniające pracę, sposoby tworzenia przenośnego kodu oraz testowania oprogramowania. Książka zawiera również omówienie biblioteki standardowej C++ oraz wzorców projektowych.
* Zasady tworzenia projektów w C++
* Projektowanie obiektowe
* Korzystanie z biblioteki standardowej C++
* Tworzenie kodu przeznaczonego do wielokrotnego zastosowania
* Styl kodowania
* Zarządzanie pamięcią
* Procedury obsługi wyjątków
* Przeciążanie operatorów
* Tworzenie aplikacji wieloplatformowych
* Testowanie kodu i usuwanie błędów
* Programowanie rozproszone
* Stosowanie wzorców projektowych
Naucz się korzystać z C++ tak, jak robią to profesjonaliści.
Język programowania PHP stanowi dla wielu osób przepustkę w świat pisania aplikacji działających po stronie serwera WWW. Łatwość z jaką przychodzi nauczenie się tego języka, sprawiła, że używają go setki tysięcy amatorów i profesjonalistów na całym świecie.
Po pewnym czasie wiedza wyniesiona z podręczników opisujących podstawy PHP języka przestaje wystarczać. Niniejsza książka pomoże Ci w wykonaniu kolejnego kroku: kroku w kierunku pisania zaawansowanych aplikacji. Dzięki niej wzbogacisz swoją wiedzę i staniesz się prawdziwym ekspertem programowania w PHP, poszukiwanym na rynku pracy.
* Poznasz tajniki programowania obiektowego.
* Nauczysz się korzystać z baz danych.
* Dowiesz się, w jaki sposób zabezpieczać stworzone przez siebie aplikacje.
* Napiszesz własny sklep internetowy, korzystając z sesji i bazy SQL.
* Poznasz sposoby uruchamiania programów PHP w oderwaniu od serwera WWW.
* Nauczysz się generować nie tylko strony WWW, ale także grafikę i pliki PDF.
* Dowiesz się, jak i po co używać języka XML.
* Skorzystasz z wielu rozszerzeń języka, które ułatwiają rozwiązywanie złożonych problemów.
Pomoże Ci w tym prosty język w jakim napisana jest książka oraz liczne przykłady kodu, a także osoba autora, doświadczonego programisty i wykładowcy PHP na Uniwersytecie Kalifornijskim w Berkeley.
Flash jest już standardem dla sieciowych multimediów, dostępnych dla ponad 250 milionów użytkowników na całym świecie. Książka "ActionScript. Przewodnik encyklopedyczny" to pełna dokumentacja języka ActionScript -- zorientowanego obiektowo języka programowania, będącego podstawowym narzędziem tworzenia zaawansowanych witryn internetowych dla programistów Flasha. Jest kierowana zarówno do projektantów i grafików, którzy dopiero uczą się programowania, jak i do programistów JavaScript, którzy chcą przenieść swoje umiejętności na język ActionScript (oba te języki opierają się na tym samym standardzie ECMAScript).
Colin Moock nieraz już dowiódł umiejętności przekazywania swojej szerokiej wiedzy w praktyczny i przystępny sposób. W pełni zasłużył sobie na uznanie, jakim darzą go użytkownicy Flasha.
W pierwszej części książki opisano podstawowe zagadnienia programistyczne (zmienne, typy danych, operatory, wyrażenia, funkcje, zdarzenia, tablice i obiekty), poświęcając dużo uwagi ich wykorzystaniu, szczególnie w obróbce klipów filmowych. Druga część jest poświęcona typowym zastosowaniom ActionScriptu, takim jak przetwarzanie formularzy sieciowych. Trzecia część, stanowiąca leksykon języka, zawiera opis zmiennych globalnych, właściwości, metod, detektorów zdarzeń i obiektów wraz z przykładami ich użycia.
Korzystając z tej książki szybko opanujesz język ActionScript. Prócz teorii znajdziesz tu praktyczne wskazówki i przykłady prezentujące tworzenie pól tekstowych, przycisków menu, quizów, witryn opartych o dokumenty XML, gier, w których obowiązują zasady praw fizyki, środowisk dla wielu użytkowników działających w czasie rzeczywistym i wielu innych. Skrupulatne opisy poruszają wiele nieudokumentowanych lub niezbadanych dotychczas tematów.
"Najlepsza książka o języku ActionScript, jaką widziałem. Trudno znaleźć gdzie indziej więcej informacji na temat tego języka".
-- Slavik Lozben, główny inżynier Flasha w firmie Macromedia
"Colin Moock napisał najbardziej miarodajną z wszystkich publikacji na temat tworzenia skryptów we Flashu. Nigdzie indziej nie sposób znaleźć opisu języka ActionScript tak wyczerpującego, praktycznego i dokładnego
-- Jeremy Clark, kierownik produkcji programu Macromedia Flash
Perl to uniwersalny, wygodny i niezwykle elastyczny język programowania. Jego rozwój, wspierany przez rzeszę programistów, doprowadził do stworzenia narzędzia o ogromnych możliwościach dostępnego dla prawie wszystkich systemów operacyjnych. Jest to język wyjątkowy, gdyż pozwala programiście na wybór własnego stylu pisania kodu, nie narzucając "jedynie słusznych" rozwiązań. Dzięki tej zalecie Perl cieszy się wielką popularnością wśród osób nie zajmujących się zawodowo programowaniem (np. administratorów czy webmasterów). Kilka tysięcy darmowych modułów dodatkowo poszerza potencjał Perla.
Książka "Perl. Od podstaw" przedstawia szeroki zakres zastosowań tego języka. Nauczysz się z niej instalować Perla w różnych systemach operacyjnych, poznasz podstawowe konstrukcje języka: instrukcje, wyrażenia regularne i moduły, dowiesz się jak korzystać z baz danych za pomocą Perla i jak pisać skrypty CGI.
Dla kogo adresowana jest ta książka?
Książka przeznaczona jest dla wszystkich, którzy chcą poznać język Perl. Jeśli masz już doświadczenie programistyczne, będzie Ci łatwiej ją czytać; jeśli Perl jest Twoim pierwszym językiem programowania, bez trudu przebrniesz przez tą lekturę.
Książka zawiera:
* Pełen kurs języka Perl (zarówno dla Windows jak i dla Uniksa)
* Opis korzystania z dodatkowych modułów dostępnych w sieci
* Opis składni Perla
* Sposoby wykorzystania plików i baz danych w Perlu
* Omówienie programowania skryptów CGI
* Wykorzystanie Perla jako języka zorientowanego obiektowo
Doskonały przewodnik po najnowszej wersji języka PHP
dla twórców dynamicznych serwisów WWW
Książka "PHP. Programowanie. Wydanie III" to kolejne wydanie praktycznego przewodnika dla programistów stron internetowych. Jeden z najlepszych programistów PHP -- Leon Atkinson, uczy wszystkiego, co potrzebujesz, by stworzyć dobrą i szybką aplikację sieciową. Dokładnie opisuje składnię PHP i kluczowe elementy języka. Atkinson przedstawia także najważniejsze funkcje PHP, w tym funkcje wejścia-wyjścia, przetwarzania danych, matematyczne, daty, czasu, konfiguracji, funkcje umożliwiające współpracę z bazami danych, funkcje graficzne i sieciowe. Prezentuje on również działanie PHP na przykładach realizujących sortowanie, przeszukiwanie, analizę łańcuchów i inne zadania.
Książka składa się z czterech części:
* wstępu do programowania,
* przewodnika po wszystkich funkcjach,
* przeglądu typowych problemów programistycznych
* części umożliwiającej zastosowanie zdobytej wiedzy przy tworzeniu witryn.
Pierwsza część zajmuje się kwestiami dotyczącymi wszystkich języków programowania: jak wygląda skrypt PHP, jak sterować przebiegiem programu i jak zarządzać danymi.
Część druga organizuje funkcje według ich zastosowania i zawiera przykłady ich zastosowania. PHP udostępnia bardzo dużo funkcji, dlatego część ta jest najobszerniejsza.
Część trzecia zajmuje się rozwiązywaniem typowych problemów programistycznych, takich jak sortowanie czy generowanie grafiki.
Ostatnia część udziela porad dotyczących tworzenia całych witryn sieciowych za pomocą PHP.
* Poznaj wzorce projektowe w PHP, techniki programowania obiektowego i możliwości wykorzystania języka XML
* Wykorzystaj nowe funkcje i możliwości PHP 5
* Napisz wydajne aplikacje internetowe, wykorzystując najlepsze praktyki inżynierii oprogramowania
Książka "PHP. Programowanie." to praktyczny przewodnik po PHP4 dla programistów stron internetowych. Jeden z najlepszych programistów PHP -- Leon Atkinson, uczy wszystkiego, co potrzebujesz, by stworzyć dobrą i szybką aplikację sieciową. Dokładnie opisuje składnię PHP i kluczowe elementy języka. Atkinson przedstawia także najważniejsze funkcje PHP, w tym funkcje wejścia-wyjścia, przetwarzania danych, matematyczne, daty, czasu, konfiguracji, funkcje umożliwiające współpracę z bazami danych, funkcje graficzne i sieciowe. Prezentuje on również działanie PHP na przykładach realizujących sortowanie, przeszukiwanie, analizę łańcuchów i inne zadania. Opisane zostały także praktyczne metody tworzenia i diagnostyki programów w PHP4.
Książka PHP. Programowanie zawiera:
* Jasny i szczegółowy opis składni i funkcji PHP
* Dokładny opis integracji PHP z bazami danych
* Techniki tworzenia i optymalizacji skryptów, pod kątem ich wydajności i łatwej rozbudowy
* Praktyczne techniki diagnostyczne, ułatwiające znalezienie i poprawienie błędów
Efektywne wykorzystanie potencjału systemów uniksowych
* Automatyzacja zadań
* Przeszukiwanie plików i katalogów
* Przenoszenie skryptów pomiędzy systemami
W dobie graficznych narzędzi programistycznych często pomijamy tradycyjne metody rozwiązywania przeróżnych zadań związanych z działaniem systemu operacyjnego. Skrypty powłoki, niegdyś podstawowe narzędzie administratorów i programistów systemów uniksowych, dziś są zdecydowanie mniej popularne. Skrypty powłoki są przydatne zarówno administratorom systemu, jak i szeregowym użytkownikom, ponieważ są jednym z najlepszych sposobów na zaprzęgnięcie do pracy setek narzędzi, w jakie wyposażony jest Unix. Z narzędzi tych w języku programowania powłoki łatwo stworzyć rozwiązanie niemal dowolnego zadania związanego z przetwarzaniem danych.
Książka "Programowanie skryptów powłoki" to kompendium wiedzy dotyczącej tej nieco już zapomnianej techniki. Przedstawia nie tylko język programowania powłoki, ale także narzędzia systemu Unix. Dostarcza informacji o tym, do jakich zadań się nadają, jak je wywoływać i jak łączyć je z innymi programami, konstruując z nich mechanizm przetwarzania danych. W książce opisano nie tylko sposoby pisania użytecznych skryptów powłoki, ale również metody dostosowywania powłoki do własnych potrzeb oraz przenoszenia skryptów pomiędzy różnymi wariantami Uniksa i różnymi implementacjami powłoki.
* Podstawowe elementy skryptów powłoki
* Wyszukiwanie i zastępowanie fragmentów tekstów
* Stosowanie wyrażeń regularnych
* Korzystanie z potoków
* Instrukcje warunkowe
* Definiowanie i stosowanie zmiennych
* Przetwarzanie plików
* Standardowe wejście i wyjście
* Korzystanie z możliwości awk
* Przenoszenie skryptów pomiędzy różnymi powłokami
* Bezpieczeństwo skryptów powłoki
Książka "Programowanie skryptów powłoki" zawiera wszystkie informacje niezbędne do mistrzowskiego opanowania narzędzi oferowanych przez systemy uniksowe.
Znajomość języka PHP wykorzystywanego do tworzenia dynamicznych stron WWW to dziś jedna z podstawowych umiejętności wymaganych od webmastera. Era statycznych stron tworzonych za pomocą języka HTML przeminęła już dawno, a dynamiczne generowanie treści stało się obecnie standardem. Język PHP i baza danych MySQL stanowią platformę o wielkich możliwościach, stosowaną do tworzenia zarówno wielkich portali i witryn e-commerce, jak i prostych stron prywatnych.
Książka "PHP5. Praktyczny kurs" jest wprowadzeniem w tajniki nowoczesnego tworzenia stron WWW. Przedstawia proces instalacji języka PHP wraz z serwerami WWW, podstawowe konstrukcje języka i sposoby wykorzystania ich w procesie budowania witryny. Opisuje takie zagadnienia, jak współpraca z systemem plików, obsługa sesji, możliwości programowania obiektowego oraz współpraca z bazami danych. Dowiesz się z niej także, jak za pomocą PHP generować i przetwarzać elementy graficzne oraz wykorzystywać protokoły sieciowe.
* Instalacja i konfiguracja PHP w różnych systemach operacyjnych
* Zmienne, typy danych i operatory
* Instrukcje sterujące
* Komunikacja skryptów z przeglądarką
* Obsługa plików cookie i sesji
* Operacje na plikach
* Programowanie obiektowe w PHP
* Wykorzystywanie danych zgromadzonych w bazie
Poznaj i wykorzystaj w swoich projektach możliwości języka PHP.
Podręczny zbiór najbardziej przydatnych konstrukcji języka Python
* Poznaj składnię języka Pyton
* Naucz się wykonywać najczęściej używane operacje
* Używaj gotowych elementów do szybkiego tworzenia rozwiązań w Pythonie
Prawdopodobnie słyszałeś już o zaletach Pythona. Jest przenośny i działa w niemal wszystkich systemach operacyjnych. Ma niezwykle czytelną i prostą składnię, a jego odmiany mogą współpracować z innymi językami programowania. Mówi się także, że pozwala skrócić czas pisania kodu kilka razy w porównaniu z językiem C++. To jeszcze nie wszystkie atuty Pythona, o czym wkrótce się przekonasz, pisząc swoje pierwsze programy w tym języku.
Dzięki książce "Python. Rozmówki" błyskawicznie poznasz najważniejsze zwroty i konstrukcje oraz podstawy składni tego języka programowania. Nauczysz się między innymi wykonywać w aplikacjach operacje na łańcuchach i pracować z typami danych, a także pisać programy wielowątkowe i sieciowe. Dowiesz się, jak zarządzać plikami i przetwarzać je oraz jak obsługiwać bazy danych.
* Składnia języka Python
* Przetwarzanie łańcuchów danych
* Korzystanie z typów danych
* Praca z plikami
* Tworzenie aplikacji wielowątkowych
* Komunikacja z bazami danych
* Obsługa komunikacji sieciowej
* Tworzenie usług sieciowych
* Przetwarzanie danych w formatach XML i HTML
Wykorzystaj gotowe fragmenty kodu --
zacznij pisać niezawodne programy w Pythonie.
Dołącz do społeczności programistów Pythona!
* Poznaj elementy języka
* Zaprojektuj interfejsy użytkownika
* Stwórz własne aplikacje sieciowe
Python to jeden z najszybciej rozwijających się języków programowania. Jest dostępny na licencji open source i posiada elastyczną, czytelną składnię. Jego możliwości pozwalają programistom na tworzenie aplikacji sieciowych, komunikację z bazami danych i zarządzanie systemami operacyjnymi. Python jest językiem wieloplatformowym, dzięki czemu napisane w nim programy można uruchamiać w różnych środowiskach i pod kontrolą różnych systemów operacyjnych. Ogromne możliwości tego języka zainspirowały duże grono entuzjastów aktywnie dzielących się wiedzą na jego temat na różnego rodzaju forach i listach dyskusyjnych. Gwarantuje to, że żadne zadane im pytanie dotyczące Pythona nie pozostanie bez odpowiedzi.
Książka "Python. Od podstaw" to podręcznik dla tych, którzy chcą opanować ten język i tworzyć w nim własne aplikacje. Dzięki niej poznasz wszystkie elementy Pythona i dowiesz się, na czym polega programowanie obiektowe. Nauczysz się przetwarzać dane tekstowe i liczbowe, tworzyć graficzne interfejsy użytkownika za pomocą GTK oraz łączyć aplikacje z bazami danych. Poznasz zasady korzystania z plików XML, pisania aplikacji internetowych i integrowania Pythona z usługami sieciowymi oraz innymi językami programowania.
Oto niektóre z zagadnień poruszanych w tej książce:
* operacje na liczbach i ciągach znaków,
* konstrukcje sterujące,
* funkcje i moduły,
* programowanie obiektowe,
* operacje na plikach i folderach,
* połączenia z bazami danych,
* przetwarzanie plików XML,
* obsługa serwerów pocztowych,
* tworzenie własnych rozszerzeń w języku C,
* aplikacje biznesowe,
* usługi sieciowe,
* integracja Pythona i Javy.
Zostań profesjonalnym programistą C#
C# jest uważany przez wielu programistów za najlepszy język stosowany do tworzenia aplikacji dla platformy .NET. Język ten, opracowany w firmie Microsoft, łączy w sobie najbardziej wartościowe cechy C++ i Javy, ścisłą integrację z komponentami .NET, wysoki poziom bezpieczeństwa i ogromne możliwości. Świetnie nadaje się do tworzenia aplikacji sieciowych i bazodanowych przeznaczonych zarówno dla systemu Windows, jak i dla urządzeń przenośnych, takich jak PocketPC. Popularność C# stale rośnie, a nieodpłatne udostępnienie przez firmę Microsoft środowiska programistycznego Visual C# Express Edition sprawiło, że coraz więcej twórców oprogramowania wykorzystuje je w swojej pracy.
Książka "Wstęp do programowania w języku C#" to podręcznik przeznaczony dla tych, którzy chcą poznać ten język od podstaw. Czytając ją, poznasz możliwości C# i platformy .NET. Nauczysz się tworzyć własne aplikacje, korzystając ze środowiska Visual C# Express Edition. W książce znajdziesz omówienie składni i elementów języka C#, wyjaśnienie zasad programowania obiektowego i sposobów realizacji różnych zadań programistycznych. Napiszesz aplikacje dla Windows wykorzystujące biblioteki klas .NET i obsługujące pliki w formacie XML.
* Konstrukcja platformy .NET
* Składnia C#
* Elementy języka
* Programowanie obiektowe
* Obsługa zdarzeń
* Korzystanie z tablic i kolekcji
* Obsługa wyjątków
* Biblioteka Windows Forms
* Stosowanie komponentów .NET
* Operacje na plikach i strumieniach
* Obsługa formatu XML
Profesjonalne techniki programowania obiektowego w PHP5
* Poznaj zasady projektowania i programowania obiektowego
* Zastosuj wzorce projektowe podczas tworzenia aplikacji
* Wykorzystaj narzędzia wspomagające pracę programisty PHP5
Wraz z rosnącą popularnością języka PHP zwiększa się również zakres jego zastosowań. Za pomocą PHP tworzy się już nie tylko proste dynamiczne witryny WWW i fora dyskusyjne, ale również rozbudowane aplikacje sieciowe, wykorzystywane często w dużych przedsiębiorstwach. Już w PHP4 zaimplementowano pewne mechanizmy ułatwiające tworzenie rozbudowanych systemów, jednak dopiero PHP5 stał się w pełni obiektowym językiem programowania pozwalającym na korzystanie z wszystkich wynikających z tego możliwości.
"PHP5. Obiekty, wzorce i narzędzia" stanowi dokładne omówienie wszystkich technik obiektowych w kontekście zastosowania ich podczas tworzenia aplikacji w PHP5. Zawiera przegląd podstawowych i zaawansowanych cech PHP5 związanych z obiektowością. Przedstawia przykłady najczęściej wykorzystywanych wzorców projektowych i zasady ich stosowania. Książka opisuje również narzędzia, które mogą okazać się bardzo przydatne podczas tworzenia rozbudowanych aplikacji, służące do tworzenia dokumentacji i kontroli wersji plików.
* Podstawowe pojęcia z dziedziny obiektowości
* Obsługa obiektów
* Wyjątki i obsługa błędów
* Projektowanie obiektowe
* Modelowanie obiektów w języku UML
* Wzorce projektowe
* Stosowanie pakietu PEAR
* Generowanie dokumentacji za pomocą PHPDocumentor
* Zarządzanie wersjami plików w systemie CVS
* Tworzenie pakietów instalacyjnych
Przekonaj się, jak potężnym narzędziem jest najnowsza wersja języka PHP.
Bądź na bieżąco z najnowszymi narzędziami i technikami programowania
* Wykorzystaj możliwości szablonów
* Połącz skrypty Perla z programami napisanymi w innych językach programowania
* Przetestuj kod i popraw wydajność projektu
Perl, jeden z pierwszych języków skryptowych służących do dynamicznego generowania zawartości witryn WWW, nie traci popularności mimo dość sędziwego wieku. Ciągle wzrasta zainteresowanie tym językiem, co pewien czas powstają kolejne jego wersje. W sieci funkcjonują tysiące witryn poświęconych programowaniu w Perlu, jednak podczas pracy nad rozbudowaną aplikacją nie zawsze znajdujemy czas na poszukiwanie niezbędnych informacji. Zgromadzenie w jednym tomie opisów technik stosowanych przez doświadczonych programistów pozwoliłoby znacznie przyspieszyć pracę.
Książka "Perl. Zaawansowane programowanie. Wydanie II" to kompendium wiedzy dla wszystkich, którzy tworzą aplikacje w Perlu. Autor opisuje zmiany, jakie wprowadzono w Perlu w ciągu ostatnich lat, koncentrując się na technikach rozwiązywania konkretnych problemów, a nie na teoretycznych rozważaniach. Kładzie duży nacisk na możliwości stosowania gotowych kodów z witryn Comprehensive Perl Archive Network, w których zgromadzono setki przykładów wykorzystania Perla. Uczy efektywnej pracy i zachęca do stosowania zaawansowanych narzędzi i technik programistycznych.
* Techniki przetwarzania danych tekstowych
* Stosowanie szablonów
* Pobieranie wiadomości RSS
* Obsługa baz danych
* Korzystanie z kodowania Unicode
* Programowanie sterowane zdarzeniami
* Testowanie kodu i usuwanie błędów
* Łączenie kodu Perla z kodem C za pomocą modułu Inline
Odkryj magię Perla.
Książka zawiera oficjalną dokumentację języka Visual C# .NET. C# jest jednym z podstawowych języków dostępnych na platformie .NET, łączącym w sobie największe zalety Javy i C++. "Visual C#. NET. Encyklopedia" to doskonałe uzupełnienie dokumentacji dostępnej w formie elektronicznej, niezbędne dla każdego programisty korzystającego z C#. Poza szczegółowym opisem języka, a także kompilatora C#, zawiera ona wiele przykładów gotowych do wykorzystania w konkretnych aplikacjach. Jest to książka, do której będziesz często powracał.
Omówiono:
* Typy
* Modyfikatory
* Polecenia
* Przestrzenie nazw
* Operatory
* Przekształcenia
* Dyrektywy preprocesora
* Atrybuty
* Tworzenie dokumentacji w XML
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
Pierwsze wydanie książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" zostało sprzedane w nakładzie 100 000 egzemplarzy i zostało przetłumaczone na cztery języki. Nietrudno zrozumieć, dlaczego tak się stało. Scott Meyers w charakterystyczny dla siebie, praktyczny sposób przedstawił wiedzę typową dla ekspertów -- czynności, które niemal zawsze wykonują lub czynności, których niemal zawsze unikają, by tworzyć prosty, poprawny i efektywny kod. Każda z zawartych w tej książce pięćdziesięciu wskazówek jest streszczeniem metod pisania lepszych programów w C++, zaś odpowiednie rozważania są poparte konkretnymi przykładami. Z myślą o nowym wydaniu, autor opracował od początku wszystkie opisywane w tej książce wskazówki. Wynik jego pracy jest wyjątkowo zgodny z międzynarodowym standardem C++, technologią aktualnych kompilatorów oraz najnowszymi trendami w świecie rzeczywistych aplikacji C++.
Do najważniejszych zalet książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" należą:
* Eksperckie porady dotyczące projektowania zorientowanego obiektowo, projektowania klas i właściwego stosowania technik dziedziczenia
* Analiza standardowej biblioteki C++, włącznie z wpływem standardowej biblioteki szablonów oraz klas podobnych do string i vector na strukturę dobrze napisanych programów
* Rozważania na temat najnowszych możliwości języka C++: inicjalizacji stałych wewnątrz klas, przestrzeni nazw oraz szablonów składowych
* Wiedza będąca zwykle w posiadaniu wyłącznie doświadczonych programistów
Książka "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" pozostaje jedną z najważniejszych publikacji dla każdego programisty pracującego z C++.
W książce "UML. Wprowadzenie" Sinan Si Alhir przedstawia UML i jego znaczenie, a następnie prowadzi w kierunku mistrzowskiego opanowania języka. Najpierw dowiesz się, jak UML wykorzystywany jest do modelowania struktury systemu. W rozdziale poświęconym diagramom klas i diagramom obiektów przedstawiono wiele pojęć związanych z UML-em: ogólnych (klasy) i szczegółowych (obiekty). Następnie dowiesz się, jak za pomocą diagramów przypadków użycia modelować funkcjonalność systemu. Na koniec zobaczysz, w jaki sposób za pomocą diagramów komponentów i wdrażania modeluje się sposób wdrożenia systemu w środowisku fizycznym.
Nauczysz się, jak posługiwać się diagramami sekwencji i kolaboracji, jak modelować interakcje pomiędzy składnikami systemu, jak za pomocą diagramów stanów opisywać cykle życiowe składników systemu i jak dokumentować czynności przepływów sterowania i zakresy odpowiedzialności.
Od pierwszej do ostatniej strony książki Sinan Si Alhir koncentruje się na UML-u jako języku i unika zaplątania się w metodologii. Jego wywody są jasne i zwięzłe. Każdy rozdział kończy się zestawem ćwiczeń, które pozwolą Ci sprawdzić Twoją coraz większą znajomość języka UML. Pod koniec książki (a nawet wcześniej), powinieneś zauważyć swoją rosnącą sympatię do prostego, acz wyrazistego języka, jakim jest UML i zacząć stosować go do efektywnego i profesjonalnego przekazywania wszelkich aspektów projektowania systemów.
C++ wspomaga programowanie w dużej skali, pozwalając na precyzyjne wyrażenie współzależności pomiędzy różnymi częściami programu. Dlatego zakres pojęciowy techniki i stylu programowania w C++ wykracza poza tradycyjne jego pojmowanie w odniesieniu do programowania w małej skali, sprowadzającego się do szczegółów kodowania wiersz po wierszu.
Autor dowodzi, że nieprzemyślane stosowanie złożonych i zaawansowanych technik programowania może prowadzić do tworzenia chaotycznych, niezrozumiałych i mętnych konstrukcji, stanowiących zarazem często rozwiązania mniej efektywne, niż prostsze i zrozumiałe konstrukcje alternatywne. Tom Cargill dokonuje przeredagowania licznych programów, stosując techniki pozwalające na udoskonalenie kodu, począwszy od poprawy spójności, po usunięcie zbędnego, nadmiarowego dziedziczenia. Sposób prezentacji zagadnień rozpoczyna się od przeglądu oryginalnego kodu, który możesz samodzielnie ocenić i przeanalizować, rozważając możliwe alternatywne podejścia do przedstawionych zagadnień programistycznych. Te własne przemyślenia możesz następnie porównać z analizami i wnioskami Autora.
Na podstawie przykładów formułowane są uniwersalne reguły i zasady tworzenia kodu i projektowania programów. Zrozumienie i umiejętne stosowanie tych reguł pomoże profesjonalnym programistom projektować i pisać lepsze programy w C++.
Kolejne rozdziały poświęcone są następującym zagadnieniom:
* Abstrakcja -- pojęcia i modele abstrakcyjne
* Spójność
* Zbędne dziedziczenie
* Funkcje wirtualne
* Przeciążanie operatorów
* Nakładki typu "wrapper"
* Efektywność
Po wprowadzeniu i zilustrowaniu reguł programowania w pierwszych siedmiu rozdziałach, Tom Cargill prezentuje praktyczne studium, w trakcie którego pojedynczy przykładowy program przechodzi kolejne transformacje, które pozwalają poprawić jego ogólną jakość przy jednoczesnym zredukowaniu wielkości kodu. Konkluzję książki stanowi rozdział poświęcony wielokrotnemu dziedziczeniu.
Książka Toma Cargilla to nie tylko cenne źródło wiedzy dla zaawansowanych programistów -- przyda się ona również studentom informatyki i pokrewnych kierunków, zainteresowanych zdobyciem profesjonalnych umiejętności programistycznych.
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
Szkoła programowania Bruce’a Eckela!
Podczas nauki tworzenia aplikacji w języku C++ towarzyszyć Ci będzie jeden z najlepszych dydaktyków programowania na świecie!
Nauka języka C++ i szczegółowe poznanie jego możliwości to poważne wyzwanie nie tylko dla początkującego, ale również dla zaawansowanego programisty. W książce "Thinking in C++. Edycja polska" Bruce Eckel w doskonały sposób przedstawił podstawowe zagadnienia związane z tym językiem. Jeśli opanowałeś materiał z tej książki, możesz rozpocząć lekturę drugiego tomu.
Następnym krokiem jest -- "Thinking in C++. Edycja polska. Tom II" -- kolejny bestseller Bruce’a Eckela poświęcony językowi C++. Tym razem Bruce w typowy dla siebie, prosty i zrozumiały sposób opisuje zaawansowane aspekty programowania w C++. Dowiesz się, jak korzystać z referencji, przeciążania operatorów, dziedziczenia i obiektów dynamicznych, a także poznasz zagadnienia zaawansowane -- prawidłowe użycie szablonów, wyjątków i wielokrotnego dziedziczenia. Wszystkie tematy opatrzone są ćwiczeniami.
* obsługa wyjątków
* programowanie defensywne
* standardowa biblioteka C++
* strumienie wejścia-wyjścia
* wzorce projektowe
* zaawansowane metody programowania obiektowego
* współbieżność
Kody źródłowe znajdujące się w książce są zgodne z wieloma kompilatorami C++.
O autorach:
Bruce Eckel jest prezesem MindView, Inc., firmy prowadzącej zarówno otwarte jak i zamknięte kursy treningowe; zajmującej się też doradztwem, nadzorem i kontrolą nad projektami związanymi z technologiami obiektowymi i wzorcami projektowymi. [więcej...]
Chuck Allison jest matematykiem, pełniącym obecnie funkcję wykładowcy na wydziale informatyki uniwersytetu stanowego Utah Valley. Do niedawna pełnił funkcję redaktora w magazynie C/C++ Users Journal. [więcej...]
Błyskawiczny kurs tworzenia aplikacji WWW w języku C#
C# to całkiem nowy język programowania zaprojektowany przez firmę Microsoft. Wygląda on jak mieszanka C++ i Javy, jest jednak tak prosty jak Visual Basic. Z jego pomocą można tworzyć aplikacje WWW i programy wyposażone w graficzny interfejs użytkownika. Język ten związany jest z platformą .NET, umożliwiającą tworzenie zaawansowanych aplikacji biznesowych działających w środowisku sieciowym, w tym także z technologią budowania dynamicznych serwisów internetowych ASP.NET. Programy działające na platformie .NET można pisać w wielu językach programowania, ale wiele wskazuje na to, że właśnie C# stanie się najpopularniejszym z nich.
Książka "C# i ASP.NET. Szybki start" jest doskonałym podręcznikiem dla początkujących programistów. Jak każda pozycja z serii "Szybki start", składa się z kilkudziesięciu rozdziałów, z których każdy przedstawia kolejne kroki, które należy wykonać, by osiągnąć zamierzony cel. Dodatkową zaletę stanowią liczne ilustracje.
Opisano między innymi:
* Instalację niezbędnego oprogramowania
* Składniki języka C#
* Instrukcje warunkowe i pętle
* Pracę z ciągami znaków
* Programowanie obiektowe w C#
* Korzystanie z tablic i kolekcji
* Delegaty, zdarzenie, obsługę błędów
* Tworzenie dynamicznych serwisów WWW w języku C#
Programista chcący tworzyć zaawansowane aplikacje internetowe ma wybór pomiędzy dwoma platformami: Java 2 EE Suna i .NET Microsoftu. Jeśli wybierze tę drugą, dzięki książce "C# i ASP.NET. Szybki start" szybko będzie mógł tworzyć funkcjonalne aplikacje WWW w nowym, ekscytującym języku C#.
Cg to kompletne środowisko programistyczne do szybkiego tworzenia efektów specjalnych i grafiki o kinowej jakości w czasie rzeczywistym dla wielu platform. Ponieważ język jest niezależny od sprzętu, programiści mogą pisać kod dla interfejsów OpenGL, DirectX oraz systemów Windows, Linux, Mac OS X, a także platform konsolowych, (Xbox) bez potrzeby korzystania z języka asemblerowego. Język Cg powstał w firmie NVIDIA Corporation przy bliskiej współpracy z firmą Microsoft® Corporation i jest kompatybilny z OpenGL API oraz językiem HLSL dla biblioteki DirectX 9.
Książka jest podręcznikiem przeznaczonym dla średnio zaawansowanych programistów. Opisuje ona zarówno sam język programowania Cg, jak i metody wielu składników nowoczesnych aplikacji bazujących na grafice trójwymiarowej.
Prezentowane w książce zagadnienia to m.in.:
* Historia języka Cg
* Środowisko programistyczne Cg
* Składnia Cg i słowa kluczowe
* Przekształcenia w przestrzeni trójwymiarowej
* Oświetlenie bazujące na wierzchołkach i pikselach
* Interpolacja ujęć kluczowych i system kości
* Mapowanie środowiska
* Mapowanie nierówności
* Mgła, światła reflektorowe, cienie
* Zwiększanie wydajności
"Książka ważna i na czasie: tworzenie tekstur proceduralnych na poziomie pikseli -- animowanych chmur, ognia, wody i wielu innych sztuczek -- nareszcie z ekranów kin przechodzi pod strzechy. Cała moc jest dostępna dzięki językowi przypominającemu język C, co otwiera nowy rozdział w grafice komputerowej.
Ken Perlin, Uniwersytet w Nowym Jorku
Poznaj możliwości i mechanizmy C++ stosowane przez profesjonalistów
* Efektywne zarządzanie pamięcią
* Obsługa błędów
* Biblioteki i wzorce projektowe
Język C++ od dawna cieszy się zasłużoną popularnością wśród twórców oprogramowania. Jednak często nawet najbardziej doświadczeni programiści nie wykorzystują wszystkich jego możliwości. W opracowaniach dotyczących tego języka najczęściej omawiana jest składnia i elementy języka, a znacznie rzadziej -- jego praktyczne zastosowania. Brak odniesień do praktyki powoduje nieznajomość wielu niezwykle przydatnych i ułatwiających pracę aspektów C++ i nadmierne eksploatowanie prostych, książkowych konstrukcji.
Książka "C++. Zaawansowane programowanie" to przegląd metod programowania nie omawianych w większości publikacji. Ten przeznaczony dla średnio zaawansowanych programistów podręcznik przedstawia zasady stosowania C++ do rozwiązywania prawdziwych problemów. Opisuje nieznane możliwości znacznie przyspieszające i usprawniające pracę, sposoby tworzenia przenośnego kodu oraz testowania oprogramowania. Książka zawiera również omówienie biblioteki standardowej C++ oraz wzorców projektowych.
* Zasady tworzenia projektów w C++
* Projektowanie obiektowe
* Korzystanie z biblioteki standardowej C++
* Tworzenie kodu przeznaczonego do wielokrotnego zastosowania
* Styl kodowania
* Zarządzanie pamięcią
* Procedury obsługi wyjątków
* Przeciążanie operatorów
* Tworzenie aplikacji wieloplatformowych
* Testowanie kodu i usuwanie błędów
* Programowanie rozproszone
* Stosowanie wzorców projektowych
Naucz się korzystać z C++ tak, jak robią to profesjonaliści.
Język programowania PHP stanowi dla wielu osób przepustkę w świat pisania aplikacji działających po stronie serwera WWW. Łatwość z jaką przychodzi nauczenie się tego języka, sprawiła, że używają go setki tysięcy amatorów i profesjonalistów na całym świecie.
Po pewnym czasie wiedza wyniesiona z podręczników opisujących podstawy PHP języka przestaje wystarczać. Niniejsza książka pomoże Ci w wykonaniu kolejnego kroku: kroku w kierunku pisania zaawansowanych aplikacji. Dzięki niej wzbogacisz swoją wiedzę i staniesz się prawdziwym ekspertem programowania w PHP, poszukiwanym na rynku pracy.
* Poznasz tajniki programowania obiektowego.
* Nauczysz się korzystać z baz danych.
* Dowiesz się, w jaki sposób zabezpieczać stworzone przez siebie aplikacje.
* Napiszesz własny sklep internetowy, korzystając z sesji i bazy SQL.
* Poznasz sposoby uruchamiania programów PHP w oderwaniu od serwera WWW.
* Nauczysz się generować nie tylko strony WWW, ale także grafikę i pliki PDF.
* Dowiesz się, jak i po co używać języka XML.
* Skorzystasz z wielu rozszerzeń języka, które ułatwiają rozwiązywanie złożonych problemów.
Pomoże Ci w tym prosty język w jakim napisana jest książka oraz liczne przykłady kodu, a także osoba autora, doświadczonego programisty i wykładowcy PHP na Uniwersytecie Kalifornijskim w Berkeley.
Flash jest już standardem dla sieciowych multimediów, dostępnych dla ponad 250 milionów użytkowników na całym świecie. Książka "ActionScript. Przewodnik encyklopedyczny" to pełna dokumentacja języka ActionScript -- zorientowanego obiektowo języka programowania, będącego podstawowym narzędziem tworzenia zaawansowanych witryn internetowych dla programistów Flasha. Jest kierowana zarówno do projektantów i grafików, którzy dopiero uczą się programowania, jak i do programistów JavaScript, którzy chcą przenieść swoje umiejętności na język ActionScript (oba te języki opierają się na tym samym standardzie ECMAScript).
Colin Moock nieraz już dowiódł umiejętności przekazywania swojej szerokiej wiedzy w praktyczny i przystępny sposób. W pełni zasłużył sobie na uznanie, jakim darzą go użytkownicy Flasha.
W pierwszej części książki opisano podstawowe zagadnienia programistyczne (zmienne, typy danych, operatory, wyrażenia, funkcje, zdarzenia, tablice i obiekty), poświęcając dużo uwagi ich wykorzystaniu, szczególnie w obróbce klipów filmowych. Druga część jest poświęcona typowym zastosowaniom ActionScriptu, takim jak przetwarzanie formularzy sieciowych. Trzecia część, stanowiąca leksykon języka, zawiera opis zmiennych globalnych, właściwości, metod, detektorów zdarzeń i obiektów wraz z przykładami ich użycia.
Korzystając z tej książki szybko opanujesz język ActionScript. Prócz teorii znajdziesz tu praktyczne wskazówki i przykłady prezentujące tworzenie pól tekstowych, przycisków menu, quizów, witryn opartych o dokumenty XML, gier, w których obowiązują zasady praw fizyki, środowisk dla wielu użytkowników działających w czasie rzeczywistym i wielu innych. Skrupulatne opisy poruszają wiele nieudokumentowanych lub niezbadanych dotychczas tematów.
"Najlepsza książka o języku ActionScript, jaką widziałem. Trudno znaleźć gdzie indziej więcej informacji na temat tego języka".
-- Slavik Lozben, główny inżynier Flasha w firmie Macromedia
"Colin Moock napisał najbardziej miarodajną z wszystkich publikacji na temat tworzenia skryptów we Flashu. Nigdzie indziej nie sposób znaleźć opisu języka ActionScript tak wyczerpującego, praktycznego i dokładnego
-- Jeremy Clark, kierownik produkcji programu Macromedia Flash
Perl to uniwersalny, wygodny i niezwykle elastyczny język programowania. Jego rozwój, wspierany przez rzeszę programistów, doprowadził do stworzenia narzędzia o ogromnych możliwościach dostępnego dla prawie wszystkich systemów operacyjnych. Jest to język wyjątkowy, gdyż pozwala programiście na wybór własnego stylu pisania kodu, nie narzucając "jedynie słusznych" rozwiązań. Dzięki tej zalecie Perl cieszy się wielką popularnością wśród osób nie zajmujących się zawodowo programowaniem (np. administratorów czy webmasterów). Kilka tysięcy darmowych modułów dodatkowo poszerza potencjał Perla.
Książka "Perl. Od podstaw" przedstawia szeroki zakres zastosowań tego języka. Nauczysz się z niej instalować Perla w różnych systemach operacyjnych, poznasz podstawowe konstrukcje języka: instrukcje, wyrażenia regularne i moduły, dowiesz się jak korzystać z baz danych za pomocą Perla i jak pisać skrypty CGI.
Dla kogo adresowana jest ta książka?
Książka przeznaczona jest dla wszystkich, którzy chcą poznać język Perl. Jeśli masz już doświadczenie programistyczne, będzie Ci łatwiej ją czytać; jeśli Perl jest Twoim pierwszym językiem programowania, bez trudu przebrniesz przez tą lekturę.
Książka zawiera:
* Pełen kurs języka Perl (zarówno dla Windows jak i dla Uniksa)
* Opis korzystania z dodatkowych modułów dostępnych w sieci
* Opis składni Perla
* Sposoby wykorzystania plików i baz danych w Perlu
* Omówienie programowania skryptów CGI
* Wykorzystanie Perla jako języka zorientowanego obiektowo
Doskonały przewodnik po najnowszej wersji języka PHP
dla twórców dynamicznych serwisów WWW
Książka "PHP. Programowanie. Wydanie III" to kolejne wydanie praktycznego przewodnika dla programistów stron internetowych. Jeden z najlepszych programistów PHP -- Leon Atkinson, uczy wszystkiego, co potrzebujesz, by stworzyć dobrą i szybką aplikację sieciową. Dokładnie opisuje składnię PHP i kluczowe elementy języka. Atkinson przedstawia także najważniejsze funkcje PHP, w tym funkcje wejścia-wyjścia, przetwarzania danych, matematyczne, daty, czasu, konfiguracji, funkcje umożliwiające współpracę z bazami danych, funkcje graficzne i sieciowe. Prezentuje on również działanie PHP na przykładach realizujących sortowanie, przeszukiwanie, analizę łańcuchów i inne zadania.
Książka składa się z czterech części:
* wstępu do programowania,
* przewodnika po wszystkich funkcjach,
* przeglądu typowych problemów programistycznych
* części umożliwiającej zastosowanie zdobytej wiedzy przy tworzeniu witryn.
Pierwsza część zajmuje się kwestiami dotyczącymi wszystkich języków programowania: jak wygląda skrypt PHP, jak sterować przebiegiem programu i jak zarządzać danymi.
Część druga organizuje funkcje według ich zastosowania i zawiera przykłady ich zastosowania. PHP udostępnia bardzo dużo funkcji, dlatego część ta jest najobszerniejsza.
Część trzecia zajmuje się rozwiązywaniem typowych problemów programistycznych, takich jak sortowanie czy generowanie grafiki.
Ostatnia część udziela porad dotyczących tworzenia całych witryn sieciowych za pomocą PHP.
* Poznaj wzorce projektowe w PHP, techniki programowania obiektowego i możliwości wykorzystania języka XML
* Wykorzystaj nowe funkcje i możliwości PHP 5
* Napisz wydajne aplikacje internetowe, wykorzystując najlepsze praktyki inżynierii oprogramowania
Książka "PHP. Programowanie." to praktyczny przewodnik po PHP4 dla programistów stron internetowych. Jeden z najlepszych programistów PHP -- Leon Atkinson, uczy wszystkiego, co potrzebujesz, by stworzyć dobrą i szybką aplikację sieciową. Dokładnie opisuje składnię PHP i kluczowe elementy języka. Atkinson przedstawia także najważniejsze funkcje PHP, w tym funkcje wejścia-wyjścia, przetwarzania danych, matematyczne, daty, czasu, konfiguracji, funkcje umożliwiające współpracę z bazami danych, funkcje graficzne i sieciowe. Prezentuje on również działanie PHP na przykładach realizujących sortowanie, przeszukiwanie, analizę łańcuchów i inne zadania. Opisane zostały także praktyczne metody tworzenia i diagnostyki programów w PHP4.
Książka PHP. Programowanie zawiera:
* Jasny i szczegółowy opis składni i funkcji PHP
* Dokładny opis integracji PHP z bazami danych
* Techniki tworzenia i optymalizacji skryptów, pod kątem ich wydajności i łatwej rozbudowy
* Praktyczne techniki diagnostyczne, ułatwiające znalezienie i poprawienie błędów
Efektywne wykorzystanie potencjału systemów uniksowych
* Automatyzacja zadań
* Przeszukiwanie plików i katalogów
* Przenoszenie skryptów pomiędzy systemami
W dobie graficznych narzędzi programistycznych często pomijamy tradycyjne metody rozwiązywania przeróżnych zadań związanych z działaniem systemu operacyjnego. Skrypty powłoki, niegdyś podstawowe narzędzie administratorów i programistów systemów uniksowych, dziś są zdecydowanie mniej popularne. Skrypty powłoki są przydatne zarówno administratorom systemu, jak i szeregowym użytkownikom, ponieważ są jednym z najlepszych sposobów na zaprzęgnięcie do pracy setek narzędzi, w jakie wyposażony jest Unix. Z narzędzi tych w języku programowania powłoki łatwo stworzyć rozwiązanie niemal dowolnego zadania związanego z przetwarzaniem danych.
Książka "Programowanie skryptów powłoki" to kompendium wiedzy dotyczącej tej nieco już zapomnianej techniki. Przedstawia nie tylko język programowania powłoki, ale także narzędzia systemu Unix. Dostarcza informacji o tym, do jakich zadań się nadają, jak je wywoływać i jak łączyć je z innymi programami, konstruując z nich mechanizm przetwarzania danych. W książce opisano nie tylko sposoby pisania użytecznych skryptów powłoki, ale również metody dostosowywania powłoki do własnych potrzeb oraz przenoszenia skryptów pomiędzy różnymi wariantami Uniksa i różnymi implementacjami powłoki.
* Podstawowe elementy skryptów powłoki
* Wyszukiwanie i zastępowanie fragmentów tekstów
* Stosowanie wyrażeń regularnych
* Korzystanie z potoków
* Instrukcje warunkowe
* Definiowanie i stosowanie zmiennych
* Przetwarzanie plików
* Standardowe wejście i wyjście
* Korzystanie z możliwości awk
* Przenoszenie skryptów pomiędzy różnymi powłokami
* Bezpieczeństwo skryptów powłoki
Książka "Programowanie skryptów powłoki" zawiera wszystkie informacje niezbędne do mistrzowskiego opanowania narzędzi oferowanych przez systemy uniksowe.
Znajomość języka PHP wykorzystywanego do tworzenia dynamicznych stron WWW to dziś jedna z podstawowych umiejętności wymaganych od webmastera. Era statycznych stron tworzonych za pomocą języka HTML przeminęła już dawno, a dynamiczne generowanie treści stało się obecnie standardem. Język PHP i baza danych MySQL stanowią platformę o wielkich możliwościach, stosowaną do tworzenia zarówno wielkich portali i witryn e-commerce, jak i prostych stron prywatnych.
Książka "PHP5. Praktyczny kurs" jest wprowadzeniem w tajniki nowoczesnego tworzenia stron WWW. Przedstawia proces instalacji języka PHP wraz z serwerami WWW, podstawowe konstrukcje języka i sposoby wykorzystania ich w procesie budowania witryny. Opisuje takie zagadnienia, jak współpraca z systemem plików, obsługa sesji, możliwości programowania obiektowego oraz współpraca z bazami danych. Dowiesz się z niej także, jak za pomocą PHP generować i przetwarzać elementy graficzne oraz wykorzystywać protokoły sieciowe.
* Instalacja i konfiguracja PHP w różnych systemach operacyjnych
* Zmienne, typy danych i operatory
* Instrukcje sterujące
* Komunikacja skryptów z przeglądarką
* Obsługa plików cookie i sesji
* Operacje na plikach
* Programowanie obiektowe w PHP
* Wykorzystywanie danych zgromadzonych w bazie
Poznaj i wykorzystaj w swoich projektach możliwości języka PHP.
Podręczny zbiór najbardziej przydatnych konstrukcji języka Python
* Poznaj składnię języka Pyton
* Naucz się wykonywać najczęściej używane operacje
* Używaj gotowych elementów do szybkiego tworzenia rozwiązań w Pythonie
Prawdopodobnie słyszałeś już o zaletach Pythona. Jest przenośny i działa w niemal wszystkich systemach operacyjnych. Ma niezwykle czytelną i prostą składnię, a jego odmiany mogą współpracować z innymi językami programowania. Mówi się także, że pozwala skrócić czas pisania kodu kilka razy w porównaniu z językiem C++. To jeszcze nie wszystkie atuty Pythona, o czym wkrótce się przekonasz, pisząc swoje pierwsze programy w tym języku.
Dzięki książce "Python. Rozmówki" błyskawicznie poznasz najważniejsze zwroty i konstrukcje oraz podstawy składni tego języka programowania. Nauczysz się między innymi wykonywać w aplikacjach operacje na łańcuchach i pracować z typami danych, a także pisać programy wielowątkowe i sieciowe. Dowiesz się, jak zarządzać plikami i przetwarzać je oraz jak obsługiwać bazy danych.
* Składnia języka Python
* Przetwarzanie łańcuchów danych
* Korzystanie z typów danych
* Praca z plikami
* Tworzenie aplikacji wielowątkowych
* Komunikacja z bazami danych
* Obsługa komunikacji sieciowej
* Tworzenie usług sieciowych
* Przetwarzanie danych w formatach XML i HTML
Wykorzystaj gotowe fragmenty kodu --
zacznij pisać niezawodne programy w Pythonie.
Dołącz do społeczności programistów Pythona!
* Poznaj elementy języka
* Zaprojektuj interfejsy użytkownika
* Stwórz własne aplikacje sieciowe
Python to jeden z najszybciej rozwijających się języków programowania. Jest dostępny na licencji open source i posiada elastyczną, czytelną składnię. Jego możliwości pozwalają programistom na tworzenie aplikacji sieciowych, komunikację z bazami danych i zarządzanie systemami operacyjnymi. Python jest językiem wieloplatformowym, dzięki czemu napisane w nim programy można uruchamiać w różnych środowiskach i pod kontrolą różnych systemów operacyjnych. Ogromne możliwości tego języka zainspirowały duże grono entuzjastów aktywnie dzielących się wiedzą na jego temat na różnego rodzaju forach i listach dyskusyjnych. Gwarantuje to, że żadne zadane im pytanie dotyczące Pythona nie pozostanie bez odpowiedzi.
Książka "Python. Od podstaw" to podręcznik dla tych, którzy chcą opanować ten język i tworzyć w nim własne aplikacje. Dzięki niej poznasz wszystkie elementy Pythona i dowiesz się, na czym polega programowanie obiektowe. Nauczysz się przetwarzać dane tekstowe i liczbowe, tworzyć graficzne interfejsy użytkownika za pomocą GTK oraz łączyć aplikacje z bazami danych. Poznasz zasady korzystania z plików XML, pisania aplikacji internetowych i integrowania Pythona z usługami sieciowymi oraz innymi językami programowania.
Oto niektóre z zagadnień poruszanych w tej książce:
* operacje na liczbach i ciągach znaków,
* konstrukcje sterujące,
* funkcje i moduły,
* programowanie obiektowe,
* operacje na plikach i folderach,
* połączenia z bazami danych,
* przetwarzanie plików XML,
* obsługa serwerów pocztowych,
* tworzenie własnych rozszerzeń w języku C,
* aplikacje biznesowe,
* usługi sieciowe,
* integracja Pythona i Javy.
Zostań profesjonalnym programistą C#
C# jest uważany przez wielu programistów za najlepszy język stosowany do tworzenia aplikacji dla platformy .NET. Język ten, opracowany w firmie Microsoft, łączy w sobie najbardziej wartościowe cechy C++ i Javy, ścisłą integrację z komponentami .NET, wysoki poziom bezpieczeństwa i ogromne możliwości. Świetnie nadaje się do tworzenia aplikacji sieciowych i bazodanowych przeznaczonych zarówno dla systemu Windows, jak i dla urządzeń przenośnych, takich jak PocketPC. Popularność C# stale rośnie, a nieodpłatne udostępnienie przez firmę Microsoft środowiska programistycznego Visual C# Express Edition sprawiło, że coraz więcej twórców oprogramowania wykorzystuje je w swojej pracy.
Książka "Wstęp do programowania w języku C#" to podręcznik przeznaczony dla tych, którzy chcą poznać ten język od podstaw. Czytając ją, poznasz możliwości C# i platformy .NET. Nauczysz się tworzyć własne aplikacje, korzystając ze środowiska Visual C# Express Edition. W książce znajdziesz omówienie składni i elementów języka C#, wyjaśnienie zasad programowania obiektowego i sposobów realizacji różnych zadań programistycznych. Napiszesz aplikacje dla Windows wykorzystujące biblioteki klas .NET i obsługujące pliki w formacie XML.
* Konstrukcja platformy .NET
* Składnia C#
* Elementy języka
* Programowanie obiektowe
* Obsługa zdarzeń
* Korzystanie z tablic i kolekcji
* Obsługa wyjątków
* Biblioteka Windows Forms
* Stosowanie komponentów .NET
* Operacje na plikach i strumieniach
* Obsługa formatu XML
Profesjonalne techniki programowania obiektowego w PHP5
* Poznaj zasady projektowania i programowania obiektowego
* Zastosuj wzorce projektowe podczas tworzenia aplikacji
* Wykorzystaj narzędzia wspomagające pracę programisty PHP5
Wraz z rosnącą popularnością języka PHP zwiększa się również zakres jego zastosowań. Za pomocą PHP tworzy się już nie tylko proste dynamiczne witryny WWW i fora dyskusyjne, ale również rozbudowane aplikacje sieciowe, wykorzystywane często w dużych przedsiębiorstwach. Już w PHP4 zaimplementowano pewne mechanizmy ułatwiające tworzenie rozbudowanych systemów, jednak dopiero PHP5 stał się w pełni obiektowym językiem programowania pozwalającym na korzystanie z wszystkich wynikających z tego możliwości.
"PHP5. Obiekty, wzorce i narzędzia" stanowi dokładne omówienie wszystkich technik obiektowych w kontekście zastosowania ich podczas tworzenia aplikacji w PHP5. Zawiera przegląd podstawowych i zaawansowanych cech PHP5 związanych z obiektowością. Przedstawia przykłady najczęściej wykorzystywanych wzorców projektowych i zasady ich stosowania. Książka opisuje również narzędzia, które mogą okazać się bardzo przydatne podczas tworzenia rozbudowanych aplikacji, służące do tworzenia dokumentacji i kontroli wersji plików.
* Podstawowe pojęcia z dziedziny obiektowości
* Obsługa obiektów
* Wyjątki i obsługa błędów
* Projektowanie obiektowe
* Modelowanie obiektów w języku UML
* Wzorce projektowe
* Stosowanie pakietu PEAR
* Generowanie dokumentacji za pomocą PHPDocumentor
* Zarządzanie wersjami plików w systemie CVS
* Tworzenie pakietów instalacyjnych
Przekonaj się, jak potężnym narzędziem jest najnowsza wersja języka PHP.
Bądź na bieżąco z najnowszymi narzędziami i technikami programowania
* Wykorzystaj możliwości szablonów
* Połącz skrypty Perla z programami napisanymi w innych językach programowania
* Przetestuj kod i popraw wydajność projektu
Perl, jeden z pierwszych języków skryptowych służących do dynamicznego generowania zawartości witryn WWW, nie traci popularności mimo dość sędziwego wieku. Ciągle wzrasta zainteresowanie tym językiem, co pewien czas powstają kolejne jego wersje. W sieci funkcjonują tysiące witryn poświęconych programowaniu w Perlu, jednak podczas pracy nad rozbudowaną aplikacją nie zawsze znajdujemy czas na poszukiwanie niezbędnych informacji. Zgromadzenie w jednym tomie opisów technik stosowanych przez doświadczonych programistów pozwoliłoby znacznie przyspieszyć pracę.
Książka "Perl. Zaawansowane programowanie. Wydanie II" to kompendium wiedzy dla wszystkich, którzy tworzą aplikacje w Perlu. Autor opisuje zmiany, jakie wprowadzono w Perlu w ciągu ostatnich lat, koncentrując się na technikach rozwiązywania konkretnych problemów, a nie na teoretycznych rozważaniach. Kładzie duży nacisk na możliwości stosowania gotowych kodów z witryn Comprehensive Perl Archive Network, w których zgromadzono setki przykładów wykorzystania Perla. Uczy efektywnej pracy i zachęca do stosowania zaawansowanych narzędzi i technik programistycznych.
* Techniki przetwarzania danych tekstowych
* Stosowanie szablonów
* Pobieranie wiadomości RSS
* Obsługa baz danych
* Korzystanie z kodowania Unicode
* Programowanie sterowane zdarzeniami
* Testowanie kodu i usuwanie błędów
* Łączenie kodu Perla z kodem C za pomocą modułu Inline
Odkryj magię Perla.
Książka zawiera oficjalną dokumentację języka Visual C# .NET. C# jest jednym z podstawowych języków dostępnych na platformie .NET, łączącym w sobie największe zalety Javy i C++. "Visual C#. NET. Encyklopedia" to doskonałe uzupełnienie dokumentacji dostępnej w formie elektronicznej, niezbędne dla każdego programisty korzystającego z C#. Poza szczegółowym opisem języka, a także kompilatora C#, zawiera ona wiele przykładów gotowych do wykorzystania w konkretnych aplikacjach. Jest to książka, do której będziesz często powracał.
Omówiono:
* Typy
* Modyfikatory
* Polecenia
* Przestrzenie nazw
* Operatory
* Przekształcenia
* Dyrektywy preprocesora
* Atrybuty
* Tworzenie dokumentacji w XML
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
Pierwsze wydanie książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" zostało sprzedane w nakładzie 100 000 egzemplarzy i zostało przetłumaczone na cztery języki. Nietrudno zrozumieć, dlaczego tak się stało. Scott Meyers w charakterystyczny dla siebie, praktyczny sposób przedstawił wiedzę typową dla ekspertów -- czynności, które niemal zawsze wykonują lub czynności, których niemal zawsze unikają, by tworzyć prosty, poprawny i efektywny kod. Każda z zawartych w tej książce pięćdziesięciu wskazówek jest streszczeniem metod pisania lepszych programów w C++, zaś odpowiednie rozważania są poparte konkretnymi przykładami. Z myślą o nowym wydaniu, autor opracował od początku wszystkie opisywane w tej książce wskazówki. Wynik jego pracy jest wyjątkowo zgodny z międzynarodowym standardem C++, technologią aktualnych kompilatorów oraz najnowszymi trendami w świecie rzeczywistych aplikacji C++.
Do najważniejszych zalet książki "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" należą:
* Eksperckie porady dotyczące projektowania zorientowanego obiektowo, projektowania klas i właściwego stosowania technik dziedziczenia
* Analiza standardowej biblioteki C++, włącznie z wpływem standardowej biblioteki szablonów oraz klas podobnych do string i vector na strukturę dobrze napisanych programów
* Rozważania na temat najnowszych możliwości języka C++: inicjalizacji stałych wewnątrz klas, przestrzeni nazw oraz szablonów składowych
* Wiedza będąca zwykle w posiadaniu wyłącznie doświadczonych programistów
Książka "C++. 50 efektywnych sposobów na udoskonalenie twoich programów" pozostaje jedną z najważniejszych publikacji dla każdego programisty pracującego z C++.
W książce "UML. Wprowadzenie" Sinan Si Alhir przedstawia UML i jego znaczenie, a następnie prowadzi w kierunku mistrzowskiego opanowania języka. Najpierw dowiesz się, jak UML wykorzystywany jest do modelowania struktury systemu. W rozdziale poświęconym diagramom klas i diagramom obiektów przedstawiono wiele pojęć związanych z UML-em: ogólnych (klasy) i szczegółowych (obiekty). Następnie dowiesz się, jak za pomocą diagramów przypadków użycia modelować funkcjonalność systemu. Na koniec zobaczysz, w jaki sposób za pomocą diagramów komponentów i wdrażania modeluje się sposób wdrożenia systemu w środowisku fizycznym.
Nauczysz się, jak posługiwać się diagramami sekwencji i kolaboracji, jak modelować interakcje pomiędzy składnikami systemu, jak za pomocą diagramów stanów opisywać cykle życiowe składników systemu i jak dokumentować czynności przepływów sterowania i zakresy odpowiedzialności.
Od pierwszej do ostatniej strony książki Sinan Si Alhir koncentruje się na UML-u jako języku i unika zaplątania się w metodologii. Jego wywody są jasne i zwięzłe. Każdy rozdział kończy się zestawem ćwiczeń, które pozwolą Ci sprawdzić Twoją coraz większą znajomość języka UML. Pod koniec książki (a nawet wcześniej), powinieneś zauważyć swoją rosnącą sympatię do prostego, acz wyrazistego języka, jakim jest UML i zacząć stosować go do efektywnego i profesjonalnego przekazywania wszelkich aspektów projektowania systemów.
C++ wspomaga programowanie w dużej skali, pozwalając na precyzyjne wyrażenie współzależności pomiędzy różnymi częściami programu. Dlatego zakres pojęciowy techniki i stylu programowania w C++ wykracza poza tradycyjne jego pojmowanie w odniesieniu do programowania w małej skali, sprowadzającego się do szczegółów kodowania wiersz po wierszu.
Autor dowodzi, że nieprzemyślane stosowanie złożonych i zaawansowanych technik programowania może prowadzić do tworzenia chaotycznych, niezrozumiałych i mętnych konstrukcji, stanowiących zarazem często rozwiązania mniej efektywne, niż prostsze i zrozumiałe konstrukcje alternatywne. Tom Cargill dokonuje przeredagowania licznych programów, stosując techniki pozwalające na udoskonalenie kodu, począwszy od poprawy spójności, po usunięcie zbędnego, nadmiarowego dziedziczenia. Sposób prezentacji zagadnień rozpoczyna się od przeglądu oryginalnego kodu, który możesz samodzielnie ocenić i przeanalizować, rozważając możliwe alternatywne podejścia do przedstawionych zagadnień programistycznych. Te własne przemyślenia możesz następnie porównać z analizami i wnioskami Autora.
Na podstawie przykładów formułowane są uniwersalne reguły i zasady tworzenia kodu i projektowania programów. Zrozumienie i umiejętne stosowanie tych reguł pomoże profesjonalnym programistom projektować i pisać lepsze programy w C++.
Kolejne rozdziały poświęcone są następującym zagadnieniom:
* Abstrakcja -- pojęcia i modele abstrakcyjne
* Spójność
* Zbędne dziedziczenie
* Funkcje wirtualne
* Przeciążanie operatorów
* Nakładki typu "wrapper"
* Efektywność
Po wprowadzeniu i zilustrowaniu reguł programowania w pierwszych siedmiu rozdziałach, Tom Cargill prezentuje praktyczne studium, w trakcie którego pojedynczy przykładowy program przechodzi kolejne transformacje, które pozwalają poprawić jego ogólną jakość przy jednoczesnym zredukowaniu wielkości kodu. Konkluzję książki stanowi rozdział poświęcony wielokrotnemu dziedziczeniu.
Książka Toma Cargilla to nie tylko cenne źródło wiedzy dla zaawansowanych programistów -- przyda się ona również studentom informatyki i pokrewnych kierunków, zainteresowanych zdobyciem profesjonalnych umiejętności programistycznych.
Rozwiązania i przykłady dla programistów Perla
Książka "Perl. Receptury. Wydanie II" to wyczerpujący zbiór problemów, ich rozwiązań oraz praktycznych przykładów przydatnych dla wszystkich programujących w Perlu. Pierwsze wydanie książki cieszyło się ogromną popularnością, uznane zostało nie tylko za jedną z najlepszych książek o Perlu, lecz również za najlepszą książkę dotyczącą programowania w dowolnym języku. Ukazanie się pierwszego wydania tej książki to zarazem data powstania nowego rodzaju podręcznika programowania, nie jest to tylko zbiór różnego rodzaju sztuczek i wskazówek, ale przede wszystkim książka, która przedstawia niuanse programowania za pomocą zaczerpniętych z praktyki programistycznej problemów oraz przykładów.
Drugie wydanie książki "Perl. Receptury" zostało rozszerzone w taki sposób, aby opisać nie tylko nowe cechy samego Perla, lecz również nowe technologie powstałe od czasu opublikowania pierwszego wydania. Dodane zostały dwa całkiem nowe rozdziały, a wiele innych zostało poszerzonych: pojawiło się 80 nowych receptur, zaś 100 zostało uaktualnionych.
Książka zawiera omówienie obróbki danych (łańcuchów znakowych, wartości liczbowych, dat, tablic zwykłych oraz asocjacyjnych), obsługi operacji wejścia-wyjścia, wyrażeń regularnych, modułów, odwołań, obiektów, struktur danych, sygnałów, wykorzystania baz danych, tworzenia aplikacji graficznych, stosowania komunikacji międzyprocesowej, bezpieczeństwa, programowania aplikacji internetowych, wykorzystywania CGI oraz LWP.
Tę edycję uzupełniono także o:
* Opis obsługi standardu kodowania Unicode w Perlu z uwzględnieniem obsługi łańcuchów znakowych, wyrażeń regularnych oraz operacji wejścia-wyjścia.
* Specjalny rozdział poświęcony programowaniu przy użyciu mod_perla, będącego modułem Apache osadzającym język Perl w tym popularnym serwerze HTTP, co ogromnie przyspiesza wykonywanie zadań w porównaniu z tradycyjnym interfejsem CGI.
* Nowe oraz uaktualnione receptury opisujące zastosowanie modułów dołączanych do standardowej dystrybucji Perla.
* Nowy rozdział dotyczący przetwarzania dokumentów XML, światowego standardu wykorzystywanego w procesie tworzenia oraz wymiany dokumentów.
Książka "Perl. Receptury. Wydanie II" została określona mianem najbardziej przydatnej książki napisanej dotychczas o Perlu. Uczy ona programowania w najszybszy sposób: przedstawiając sposób rozwiązania danego zadania przez ekspertów, a następnie jego objaśnienie. Choć książka ta nie jest podręcznikiem języka Perl, pokazuje ona, jak należy programować w tym języku.
W 1991 roku fiński student -- Linus Torvalds -- zainspirowany ideą otwartego oprogramowania, postanowił stworzyć darmowy system operacyjny przypominający w zarysach system Unix. Dzięki udostępnieniu wszystkim zainteresowanym kodu źródłowego oprogramowania, prace nad rozwojem systemu prowadziła szeroka rzesza programistów z całego świata. Efektem ich starań stał się system Linux. System ten występuje w wielu wersjach (tzw. dystrybucjach) składających się z jądra systemu i programów dodatkowych. Najpopularniejszymi dystrybucjami są RedHat i Mandrake, których najnowsze edycje zostały omówione w tej książce.
Ta przystępnie napisana książka wprowadzi Cię w świat Linuksa opisując podstawowe operacje związane z instalacją i konfiguracją tego systemu.
Poznasz:
* Instalację i konfigurację dystrybucji RedHat Linux
* Instalację i konfigurację dystrybucji Mandrake Linux 9.1
* Przeglądanie zasobów komputera w Linuksie
* Pakiet internetowy Mozilla
* Pakiet biurowy OpenOffice.org
* Korzystanie z multimediów w Linuksie
* Terminologię związaną z Linuksem
Po ponad 20 latach od swoich narodzin system Linux dojrzał na tyle, by stanowić alternatywę dla dominujących na rynków systemów z rodziny Windows. Choć ciągle nie może pochwalić się tak wielką liczbą aplikacji jak Windows, do jego zalet należy niska -- bo zerowa -- cena i ogromna stabilność pracy.
Ten system się nie "zawiesza"!
Warto go poznać i nauczyć się z niego korzystać.
Dodatkowy rozdział opisujący multimedia w systemie Linux możesz
ściągnąć tutaj
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
Zamiast długich tekstów - rysunki z dokładnymi objaśnieniami. Samodzielna nauka nigdy nie była tak prosta
Coraz częściej użytkownicy korzystający z Internetu chcą aktywnie zaistnieć w sieci poprzez stworzenie własnej strony WWW. Na przeszkodzie staje zazwyczaj nieznajomość języka HTML, służącego do określania struktury i wyglądu witryny. Istnieją oczywiście dziesiątki programów umożliwiających stworzenie własnej strony w sposób niewiele różniący się od tworzenia elektronicznego dokumentu za pomocą programów takich jak Microsoft Word, jednak tworzenie stron WWW z ich pomocą przy braku znajomości choćby podstaw języka HTML, można porównać do pracy mechanika samochodowego, który potrafi jedynie wypolerować karoserię i wymienić filtr powietrza, nie mając przy tym pojęcia, po co w ogóle to robi.
Książka, którą trzymasz w ręku ma na celu zaznajomienie Cię z podstawami języka HTML. Nie będziesz potrzebował w czasie nauki żadnych zaawansowanych programów -- wystarczy komputer osobisty pracujący pod kontrolą dowolnego systemu operacyjnego i wyposażony w nowoczesną przeglądarkę WWW. Znajomość opisanych w książce podstaw zdecydowanie ułatwi Ci ewentualną naukę obsługi bardziej skomplikowanych programów służących do wizualnego tworzenia rozbudowanych serwisów internetowych.
Poznasz:
* Aplikacje ułatwiające tworzenie stron WWW
* Zasady formatowania tekstu w języku HTML
* Tworzenie odnośników
* Przygotowywanie grafiki i umieszczanie jej na stronach internetowych
* Tabele i ramki
* Kaskadowe arkusze stylów (CSS)
* Szybkie tworzenie serwisów internetowych z wykorzystaniem szablonów
* Publikowanie serwisu WWW w sieci
Jeśli szukasz solidnego podręcznika pozwalającego na samodzielne poznanie tajemnic tworzenia stron WWW, nie musisz szukać dalej. To czego nauczysz się z tej książki, pozwoli Ci tworzyć własne strony i w pełni zaistnieć w globalnej sieci.
Książki wydawnictwa Helion z serii "Kurs" przeznaczone są dla 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.
* Przystępny i dogłębny kurs języka HTML
* Opis prostych i darmowych narzędzi ułatwiających tworzenie i publikację serwisów WWW
* Omówienie podstaw tworzenia grafiki na potrzeby stron WWW
* Wprowadzenie do stosowania kaskadowych arkuszy stylów i JavaScriptu
Napisana, by pomóc Ci w samodzielnej nauce!
Naucz się języka C++ w najlepszy sposób:
poznając go z punktu widzenia inżynierii programowania
* Demonstruje praktyczne techniki stosowane przez zawodowych programistów
* Zawiera poprawny, gruntownie przetestowany przykładowy kod źródłowy programów oraz przykłady zaczerpnięte z praktyki
* Skoncentrowana na nowoczesnych technologiach, które muszą poznać programiści
* Zawiera rady profesjonalistów, które pozwolą czytelnikowi tworzyć najlepsze programy
Książka Wiktora Shterna zatytułowana "C++. Inżynieria programowania" stosuje wyjątkowy sposób nauki języka C++ przeznaczony dla programistów mających doświadczenie w dowolnym języku programowania: prezentuje możliwość zastosowania w C++ najlepszych technik programistycznych oraz metodologii inżynierii programowania. Nawet jeżeli już wcześniej wykorzystywałeś język C++, ta wyczerpująca książka przedstawi sposób tworzenia poprawniejszego kodu, łatwiejszego do utrzymania i modyfikacji.
Książka niniejsza uczy zasad programowania obiektowego przed samą nauką języka, co pozwala wykorzystać wszystkie zalety OOP do tworzenia poprawnych aplikacji. Udoskonalisz znajomość kluczowych składników standardu ANSI/ISO C++ rozpatrywanych z punktu widzenia inżyniera: klas, metod, modyfikatorów const, dynamicznego zarządzania pamięcią, złożeń klas, dziedziczenia, polimorfizmu, operacji wejścia-wyjścia i wielu innych. Jeżeli pragniesz tworzyć w języku C++ najlepsze programy, musisz projektować, myśleć i programować stosując najlepsze obecnie praktyki inżynierii programowania. Lektura książki "C++. Inżynieria programowania" pomoże Ci w tym.
Książka "C++. Inżynieria programowania" kładzie nacisk na:
* Prezentację zastosowań zasad inżynierii programowania w programach pisanych w C++
* Tworzenie kodu łatwego do późniejszych modyfikacji
* Praktyczne zrozumienie zasad programowania obiektowego przed nauką samego języka
* Przedstawienie najnowszych cech standardu ANSI/ISO C++
* Zaprezentowanie setek realistycznych przykładów kodu programów
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...]
Doskonałe źródło wiedzy dla wszystkich programistów C#
* Szczegółowe omówienie C# i .NET w wersji 2.0
* Techniki tworzenia i zabezpieczania aplikacji oraz zarządzania kodem źródłowym i wersjami
* Dziesiątki przykładów i kodów źródłowych
Platforma .NET i język C# spowodowały prawdziwą rewolucję na rynku narzędzi programistycznych. Wersja 2.0 przyniosła kilka interesujących rozwiązań, w tym nowe typy danych, komponenty i klasy. Dodatkowe funkcje języka C# pozwalają na przyspieszenie i usprawnienie procesu tworzenia aplikacji oraz jej wdrażania i rozwijania. Dzięki platformie .NET przygotowanie wydajnej, bezpiecznej i łatwej do rozbudowy aplikacji stało się znacznie prostsze i szybsze.
Książka "C# i .NET" przedstawia możliwości platformy .NET i napisanego specjalnie dla niej języka C#. Opisuje elementy platformy, składnię i możliwości języka C# oraz zagadnienia związane z tworzeniem programów za pomocą tych narzędzi. Omawia zasady pisania aplikacji Window Forms i efektywne techniki stosowania klas graficznych z biblioteki GDI+. Charakteryzuje także technologię ADO.NET, metody korzystania z plików XML, przetwarzanie wielowątkowe oraz techniki tworzenia wydajnych aplikacji internetowych w technologii ASP.NET. Szczególną uwagę poświęcono bezpieczeństwu programów i danych oraz skalowaniu i lokalizacji oprogramowania.
* Elementy platformy .NET
* Podstawy języka C#
* Praca z klasami i obiektami w C#
* Przetwarzanie tekstu oraz operacje wejścia i wyjścia
* Tworzenie aplikacji Window Forms
* Korzystanie z biblioteki GDI+
* Połączenia z bazami danych za pomocą ADO.NET
* Aplikacje wielowątkowe oraz rozproszone
* Tworzenie aplikacji internetowych
Jeśli chcesz napisać w C# aplikację dobrej jakości, sięgnij po tę książkę.
Przyspiesz tworzenie aplikacji w Javie
* Uprość określanie zależności pomiędzy klasami
* Zastosuj narzędzie Hibernate do usprawnienia komunikacji z bazami danych
* Wykorzystaj możliwości programowania aspektowego
Technologia J2EE miała w założeniu być prosta i szybka w użytkowaniu. Praktyka jednak okazała się daleka od teorii. Mozolne tworzenie aplikacji wykorzystujących dziesiątki interfejsów połączonych wzajemnymi zależnościami, setki deskryptorów wdrożenia oraz plików pomocniczych spowodowało, że zaczęto poszukiwać rozwiązań alternatywnych. Jednym z nich okazał się framework Spring, zyskujący coraz większą popularność wśród programistów Javy. Spring jest znacznie dużo prostszy od wielu alternatywnych rozwiązań J2EE, znacznie ułatwia testowanie aplikacji, i pozwala na usuwanie zależności z kodu oraz oddzielanie ich od serwera aplikacji. Spring umożliwia również wykorzystanie programowania aspektowego.
Książka "Spring. Zapiski programisty" to praktyczny przewodnik po możliwościach tego środowiska. Jeśli wolisz poznawać nowe zagadnienia w sposób praktyczny, a nie wertując setki stron zapełnionych teoretycznymi wywodami, to ta książka jest właśnie dla Ciebie. Znajdziesz w niej omówienie zagadnień związanych z samym Springiem, współpracującymi z nim narzędziami i sposobami wykorzystania ich w procesie tworzenia aplikacji J2EE -- począwszy do graficznego interfejsu użytkownika i interfejsu sieciowego, a skończywszy na dostępie do relacyjnych baz danych.
* Tworzenie klas z zastosowaniem zależności
* Budowanie interfejsu użytkownika
* Integrowanie JSF z frameworkiem Spring
* Dostęp do baz danych za pomocą JDBC
* Odwzorowanie baz danych na obiekty za pomocą Hibernaete
* Obsługa i zabezpieczanie transakcji
* Wysyłanie i odbieranie wiadomości e-mail
Jeśli poszukujesz wydajniejszych metod tworzenia aplikacji J2EE, wykorzystaj możliwości frameworka Spring. Dzięki tej książce poznasz je wszystkie.
Język C++ od czasu jego zdefiniowania przez Bjarne Stroustrupa był kilkakrotnie uaktualniany w latach 80. i 90. XX wieku. Chociaż C++Builder nie jest dokładnym odzwierciedleniem standardu ANSI języka C++, to obecna jego wersja przygotowana przez firmę Borland jest stabilna i zgodna z oczekiwaniami programistów. Borland C++Builder stanowi połączenie nowoczesnego języka programowania, jakim jest C++, biblioteki komponentów wizualnych VCL/CLX oraz zintegrowanego środowiska programisty IDE.
"C++Builder. Kompendium programisty" omawia podstawy programowania w C++ ze szczególnym uwzględnieniem możliwości oferowanych przez kompilator Borland C++Builder. Poznasz więc nie tylko sam język, ale nauczysz się pisać w nim wydajne i przenośne aplikacje, działające zarówno w środowisku linuksowym, jak i w Windows.
Omówione zagadnienia obejmują:
* Opis zintegrowanego środowiska programisty C++Buildera
* Podstawy języka C++
* Wczesne oraz późne wiązanie -- wstęp do programowania zorientowanego obiektowo
* Możliwości C++Buildera w zakresie posługiwania się tablicami różnego typu
* Zaawansowane operatory rzutowania typów
* Informacje czasu wykonania
* Obsługę wyjątków
* Obsługę plików
* Łańcuchy ANSI
* Zmienne o typie modyfikowalnym w czasie wykonywania programu
* Funkcje FPU i systemowe
* Elementy wielowątkowości -- wykorzystanie C++ oraz C++Buildera w nowoczesnych, wielowątkowych systemach operacyjnych
* Liczby pseudolosowe i konwersje wielkości liczbowych
* Wprowadzenie do grafiki
* Komponentowy model C++Buildera i biblioteki DLL
* Biblioteka CLX -- projektowanie aplikacji przenośnych pomiędzy systemami operacyjnymi Windows i Linux
Język C# został opracowany w firmie Microsoft i wywodzi się z rodziny C/C++, choć zawiera również wiele elementów znanych programistom Javy, jak na przykład mechanizmy automatycznego odzyskiwanie pamięci. Łączy więc w sobie wszystko to, co najlepsze w Javie i C++, a dodatkowo pozwala na wygodne korzystanie z klas wchodzących w skład platformy .NET.
Dzięki książce "C#. Ćwiczenia" nauczysz się programować w C# niezależnie od tego, czy znasz już C++ lub Javę. Kilkadziesiąt ćwiczeń pozwoli Ci poznać język C# od podstaw po zagadnienia zaawansowane. Zaletą książki jest zwięzły i przystępny opis prezentowanych zagadnień i nastawienie na praktykę programistyczną, a nie na rozważania teoretyczne.
Poznasz:
* Środowisko uruchomieniowe C# i Visual Studio
* Zmienne, operatory i typy danych
* Instrukcje C#
* Podstawy programowania obiektowego, tworzenie klas, metod i konstruktorów
* Użycie tablic w C#
* Obsługę błędów za pomocą wyjątków
* Interfejsy i rzutowanie
* Obsługę zdarzeń
* Korzystanie z komponentów interfejsu użytkownika Windows
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.
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
Wzorce projektowe są modelami gotowych rozwiązań problemów programistycznych, przed jakimi często stają twórcy oprogramowania. Dzięki nim nie musimy ponownie "wymyślać koła". Dysponując wzorcami projektowymi, jesteśmy w stanie szybciej i efektywniej zbudować aplikację, ponieważ koncentrujemy się na samej implementacji algorytmu, a nie na jego opracowaniu. Najczęściej stosowane, klasyczne już, 23 wzorce projektowe opracowane przez twórców notacji UML implementowano już w wielu językach programowania. Jak sprawdzą się w połączeniu z jedną z najnowszych technologii, jaką jest .NET?
"C#. Wzorce projektowe" to kompletny przewodnik po wzorcach projektowych w C# i środowisku .NET. Przedstawia sposoby wykorzystania obiektowych cech języka C# i tworzenia eleganckiego kodu poprzez zastosowanie wzorców projektowych oraz korzystanie z ogromnych możliwości oferowanych przez biblioteki klas FCL dla środowiska Microsoft .NET. Wszystkie przedstawione w książce wzorce projektowe zostały zilustrowane przykładami kodu oraz diagramami UML, co ułatwia ich zrozumienie oraz zastosowanie w praktyce.
* Podstawowe wiadomości o wzorcach projektowych
* Interfejsy i klasy abstrakcyjne
* Wzorce interfejsów
* Wzorce odpowiedzialności
* Wzorce konstrukcyjne
* Wprowadzenie do operacji
* Wzorce operacji
* Wzorce rozszerzeń
* Wzorce rozszerzające
Poznaj zastosowanie wzorców projektowych
i wykorzystaj je w swojej pracy.
Odkryj nowe możliwości platformy .NET 2005
Visual C# 2005 to najnowsza wersja języka programowania uważanego przez wielu programistów za najlepszy język służący do tworzenia aplikacji dla platformy .NET. W połączeniu z nową biblioteką klas .NET i nowymi możliwościami środowiska Visual Studio 2005 druga edycja języka C# stała się jeszcze doskonalsza. Pisanie programów wymaga znacznie mniejszych nakładów pracy, a nowe elementy umożliwiają realizację większej ilości zadań programistycznych.
Aby poznać nowe możliwości języka C#, sięgnij po książkę "Visual C# 2005. Zapiski programisty". W tej wzorowanej na zeszytach laboratoryjnych publikacji znajdziesz notatki programistów, którzy jako pierwsi zetknęli się z tą technologią. Nie ma w niej teoretycznych wywodów, diagramów i niepotrzebnych informacji. Wykonując 50 ćwiczeń demonstrujących poszczególne aspekty tworzenia aplikacji, poznasz prostotę stosowania nowych elementów i mechanizmów i przekonasz się, jak wiele udogodnień wnosi do pracy programisty Visual C# 2005.
* Stosowanie klas generycznych
* Korzystanie z metod anonimowych
* Refaktoryzacja kodu źródłowego
* Tworzenie interfejsów użytkownika i formularzy
* Mechanizmy szybkiej instalacji aplikacji
* Zabezpieczanie aplikacji WWW
* Personalizacja stron WWW z użyciem motywów i szablonów
* Połączenia z bazą danych
C++Builder Borland Developer Studio 2006. Kompendium programistyWydawnictwo Helion
Jeden z najnowszych produktów firmy Borland, C++Builder Borland Developer Studio 2006, to połączenie nowoczesnego języka programowania, jakim jest C++, biblioteki komponentów wizualnych, zintegrowanego środowiska programistycznego oraz narzędzi służących do modelowania oprogramowania. Pomimo że zaimplementowana w C++Builder wersja języka C++ nie jest dokładnym odzwierciedleniem standardu ANSI, środowisko to zyskało duże uznanie wśród najlepszych programistów, doceniających jego uniwersalność i stabilność.
Książka "C++Builder Borland Developer Studio 2006. Kompendium programisty" przedstawia zasady programowania w języku C++ z wykorzystaniem narzędzia C++Builder 2006. Opisuje zarówno samo środowisko, jak i poszczególne elementy języka. Dzięki niej nauczysz się korzystać z języka UML używanego do projektowania aplikacji oraz dowiesz się, jak realizować projekty, wykorzystując język C++. Poznasz także nowoczesne metodologie tworzenia oprogramowania za pomocą narzędzi typu RAD.
* Środowisko C++Builder Borland Developer Studio 2006
* Podstawy języka UML
* Korzystanie z biblioteki STL
* Obsługa wyjątków
* Operacje na systemie plików
* Programowanie wielowątkowe
* Komponenty
* Programowanie grafiki
Poznaj potęgę języka C++i zdobądź szczególne umiejętności programowania.
Błyskawiczny kurs programowania aplikacji w języku C
Język C, mimo prawie 30-letniej historii, cieszy się niesłabnącą popularnością wśród programistów. Wszyscy jego użytkownicy cenią w nim prostą i czytelną składnię, niewielki i łatwy do zapamiętania zakres słów kluczowych oraz duże możliwości, dzięki którym za pomocą C można rozwiązać niemal każde zagadnienie programistyczne. Zewnętrzne biblioteki, dostępne w sieci oraz dołączane do najpopularniejszych narzędzi programistycznych, dodatkowo rozszerzają możliwości C.
Książka "Programowanie w języku C. Szybki start" to podręcznik dla tych, którzy chcą poznać C w praktyce i nie chcą przebijać się przez dziesiątki stron opisów teoretycznych. Każde zagadnienie -- od najprostszych, związanych ze strukturą programu i zasadami kompilacji aż do złożonych typów danych i obsługi plików zewnętrznych -- jest przedstawione w postaci bogato ilustrowanej sekwencji czynności. Wykonując kolejne przykłady z książki, poznasz wszystkie podstawowe wiadomości o programowaniu w języku C.
* Struktura programu w języku C
* Typy danych
* Sterowanie działaniem programu
* Korzystanie ze standardowego wejścia i wyjścia
* Deklarowanie i stosowanie funkcji
* Dyrektywy preprocesora
* Wskaźniki i zarządzanie pamięcią
* Obsługa plików
* Złożone typy danych
Poznaj zalety i możliwości najpopularniejszego języka programowania.
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.
Poznaj tajniki najpopularniejszego języka programowania
w erze Internetu
Chyba wszyscy użytkownicy internetu spotkali się z Javą, często nawet o tym nie wiedząc. W ciągu ostatnich 10 lat zyskała ona ogromną popularność, szczególnie wśród programistów aplikacji sieciowych. Jednakże kojarzenie jej z językiem przeznaczonym wyłącznie do tworzenia takich programów jest dużym błędem. Java to w pełni funkcjonalny i doskonale dopracowany język programowania, nadający się do tworzenia różnych aplikacji, a nie tylko apletów działających na stronach internetowych.
W Javie pisane są gry sieciowe, systemy bankowości elektronicznej, pakiety wspomagające sprzedaż i obsługę klienta, a nawet aplikacje działające w telefonach komórkowych i komputerach przenośnych. Podstawową zaletą języka Java jest przenośność kodu -- raz napisany program można uruchomić na każdym urządzeniu, na którym zainstalowane jest odpowiednie środowisko uruchomieniowe, zwane JRE.
Książka "Praktyczny kurs Java" przeznaczona jest dla osób rozpoczynających swoją przygodę z programowaniem w tym języku. Opisuje podstawy języka, zasady programowania obiektowego i tworzenia własnych apletów i aplikacji. Czytając kolejne rozdziały, dowiesz się:
* Jakie typy danych wykorzystywane są w Javie
* Jak deklarować zmienne i wyprowadzać ich wartości na ekran
* W jaki sposób sterować przebiegiem wykonywania programu
* Jakie zasady rządzą programowaniem obiektowym
* Czym są klasy, obiekty, argumenty i metody
* Co to są wyjątki i jak je obsługiwać w programie
* Jak wykorzystać zaawansowane techniki programowania obiektowego w swoich aplikacjach
* W jaki sposób uzyskiwać dostęp do systemu plików z poziomu swojej aplikacji
* Jak tworzyć aplety i samodzielne aplikacje
Zapoznaj się z podstawami programowania w Javie i naucz się zasad programowania obiektowego, a także dowiedz się, czym są wyjątki w Javie i stwórz własne aplety i aplikacje.
Zwięzły przewodnik opisujący najczęściej używane instrukcje języka Java
* Naucz się kompilować i uruchamiać programy w Javie
* Poznaj najpopularniejsze polecenia tego języka
* Pisz programy działające na wielu platformach
Już od wielu lat Java jest jednym z najpopularniejszych języków programowania, a znający ją programiści są poszukiwani i cenieni na rynku pracy. Jej atrakcyjność wynika głównie z tego, że kod napisany w tym języku można uruchamiać na wielu platformach, włączając w to różne systemy operacyjne, a także urządzenia przenośne, na przykład telefony komórkowe. Prosty jest także dostęp do wielu narzędzi oraz bezpłatnych bibliotek ułatwiających programowanie w Javie. Ponadto język ten otwiera wielkie możliwości w zakresie tworzenia aplikacji sieciowych.
"Java. Rozmówki" przedstawia skuteczne rozwiązania najczęściej występujących problemów i pomoże Ci błyskawicznie rozpocząć programowanie w tym języku. Dowiesz się, jak kompilować i uruchamiać programy w Javie. Nauczysz się manipulować ciągami, strukturami danych i datami oraz stosować wyrażenia regularne. Poznasz operacje wejścia i wyjścia, a także sposoby pracy z katalogami i plikami. Przeczytasz o aplikacjach sieciowych działających zarówno po stronie klienta, jak i po stronie serwera. Opanujesz efektywne techniki pracy z bazami danych i korzystanie z formatu XML.
* Kompilowanie i uruchamianie programów w Javie
* Współpraca ze środowiskiem
* Obsługa ciągów i liczb
* Korzystanie ze struktur danych
* Operacje wejścia i wyjścia
* Manipulowanie plikami i katalogami
* Praca z klientami i serwerami sieciowymi
* Komunikacja z bazami danych i używanie XML
* Programowanie wielowątkowe
Dzięki treściwym rozmówkom błyskawicznie poznasz praktyczne podstawy programowania w Javie.
Poznaj profesjonalne techniki programistyczne
C++ to jeden z najpopularniejszych języków programowania. Ma zwięzłą i elegancką składnię, czytelny i logiczny model obiektów i starannie opracowane biblioteki. Jego możliwości dają programiście niemal nieograniczoną kontrolę nad komputerem. Jednak sprawne i efektywne programowanie w C++ to prawdziwa sztuka. Wymaga staranności, dokładnego zaplanowania tworzonej aplikacji oraz wiedzy o funkcjach i mechanizmach, jakie można zastosować.
Książka "C++. Sztuka programowania" przedstawia profesjonalne sposoby tworzenia aplikacji w języku C++. Nie opisuje podstaw języka – skupia się na tworzeniu praktycznych aplikacji z wykorzystaniem profesjonalnych technik programistycznych. Wykonując zawarte w książce przykłady, rozwiążesz różne zadania programistyczne i osiągniesz biegłość w posługiwaniu się językiem C++.
* Szablony STL, biblioteki i model obiektowy języka C++
* Mechanizm odzyskiwania pamięci
* Wykorzystanie wielowątkowości w aplikacjach
* Eksperymentalne elementy języka C++
* Aplikacje internetowe w C++
* Techniki sztucznej inteligencji
* Tworzenie własnego interpretera C++
O autorze:
Herb Schildt jest autorytetem w sprawach języków C, C++, Java i C#, a także doskonałym programistą systemu Windows.
[więcej...]
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.
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.
Książka "Język C. Wskaźniki. Vademecum profesjonalisty" przeznaczona jest dla zaawansowanych studentów i profesjonalistów, zapewniając obszerne źródło informacji dla tych, którzy potrzebują dogłębnego omówienia języka C. Dokładne wyjaśnienie podstaw oraz przegląd zaawansowanych funkcji pozwala programistom skorzystać z siły wskaźników w języku C. Dokładny opis idiomów programowych oraz gruntowna dyskusja zaawansowanych tematów powoduje, że książka jest nieocenionym podręcznikiem i informatorem dla studentów i zawodowych programistów.
* Zawiera wszystko, co jest niezbędne do dogłębnego poznania języka C
* Dokładnie opisuje wskaźniki, ich składnię, techniki efektywnego użycia oraz często stosowane idiomy programistyczne, w których występują wskaźniki
* Porównuje różne metody implementacji często stosowanych abstrakcyjnych typów danych
* Zawiera wskazówki na temat efektywności, przenośności i zagadnień inżynierii programowania, jak również ostrzeżenia o często popełnianych błędach
* Oferuje prosty, konwersacyjny styl, jasno opisujący trudne tematy, zawiera wiele ilustracji i diagramów pomagających z wizualizacji skomplikowanych zagadnień
* Opisuje wszystkie funkcje z biblioteki standardowej C.
O autorze:
Kenneth A. Reek jest profesorem informatyki w Rochester Institute of Technology i doświadczonym programistą, który pracował w wielu firmach jako konsultant. Książka ta powstała po dziewięciu latach prowadzenia seminariów z programowania w C.
[więcej...]
Similar to C++. Potęga języka. Od przykładu do przykładu (19)
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 C++. Potêga jêzyka.
Od przyk³adu do przyk³adu
KATALOG KSI¥¯EK Autorzy: Andrew Koenig, Barbara E. Moo
T³umaczenie: Przemys³aw Szeremiota
KATALOG ONLINE ISBN: 83-7361-374-9
Tytu³ orygina³u: Accelerated C++.
ZAMÓW DRUKOWANY KATALOG Practical Programming by Example
Format: B5, stron: 422
Przyk³ady na ftp: 122 kB
TWÓJ KOSZYK
Ksi¹¿ka ta ma pomóc Czytelnikowi w szybkim nauczeniu siê jêzyka C++ poprzez
DODAJ DO KOSZYKA
pisanie w nim przydatnych programów. Ta strategia wydaje siê oczywista, jednak jest
odmienna od powszechnie przyjêtej metodologii nauczania. Autorzy nie bêd¹ uczyæ Ciê
CENNIK I INFORMACJE
jêzyka C, choæ wielu uwa¿a, ¿e jest to niezbêdne. W prezentowanych przyk³adach od
razu wykorzystane zostan¹ wysokopoziomowe struktury, a prezentacja sposobu ich
zastosowania bêdzie czêsto wyprzedzaæ omówienie ich fundamentów. Dziêki takiemu
ZAMÓW INFORMACJE podej ciu zaczniesz szybko pisaæ programy wykorzystuj¹ce idiomy C++.
O NOWO CIACH
Zastosowany w ksi¹¿ce schemat autorzy wypróbowali podczas kursów prowadzonych
ZAMÓW CENNIK na Uniwersytecie Stanforda, na których studenci ucz¹ siê pisaæ programy ju¿ na
pierwszych zajêciach.
Poznaj:
CZYTELNIA • Podstawowe cechy C++
• Operacje na ci¹gach
FRAGMENTY KSI¥¯EK ONLINE • Pêtle i liczniki
• Przetwarzanie danych „porcja po porcji”
• Organizacjê programów i danych
• Kontenery sekwencyjne i analiza ci¹gów tekstowych
• Algorytmy biblioteki standardowej
• Kontenery asocjacyjne
• Funkcje uogólnione i definiowanie w³asnych typów
• Zarz¹dzanie pamiêci¹ i niskopoziomowymi strukturami danych
• Pó³automatyczne zarz¹dzanie pamiêci¹
• Programowanie zorientowane obiektowo
Andrew Koenig jest cz³onkiem dzia³u badaj¹cego systemy oprogramowania w Shannon
Wydawnictwo Helion Laboratory firmy AT&T oraz redaktorem projektu komitetów standaryzacyjnych jêzyka
ul. Chopina 6 C++. Jako programista z trzydziestoletnim sta¿em (piêtna cie lat po wiêconych C++)
44-100 Gliwice opublikowa³ ponad 150 artyku³ów i wyg³osi³ mnóstwo odczytów o tym jêzyku.
tel. (32)230-98-63
Barbara E. Moo jest konsultantk¹ z dwudziestoletnim do wiadczeniem
e-mail: helion@helion.pl
programistycznym. Pracuj¹c przez 15 lat dla AT&T wspó³tworzy³a jeden z pierwszych
komercyjnych produktów tworzonych w jêzyku C++, zarz¹dza³a projektem pierwszego
kompilatora C++ firmy AT&T i kierowa³a rozwojem uznanego systemu AT&T WorldNet
Internet Service. Jest wspó³autork¹ ksi¹¿ki „Ruminations on C++”. Wyk³ada na ca³ym
wiecie.
2. Spis treści
Przedmowa........................................................................................ 9
Wstęp ............................................................................................. 15
Zaczynamy ........................................................................................................................15
W.1. Komentarze...............................................................................................................16
W.2. Dyrektywa #include..................................................................................................16
W.3. Funkcja main ............................................................................................................16
W.4. Nawiasy klamrowe ...................................................................................................17
W.5. Wykorzystanie biblioteki standardowej do realizacji operacji wyjścia ...................17
W.6. Instrukcja return........................................................................................................18
W.7. Nieco głębsza analiza ...............................................................................................19
W.8. Podsumowanie..........................................................................................................21
Rozdział 1. Operacje na ciągach ........................................................................ 25
1.1. Wejście programu ......................................................................................................25
1.2. Ozdabianie powitania.................................................................................................28
1.3. Podsumowanie ...........................................................................................................32
Rozdział 2. Pętle i liczniki.................................................................................. 37
2.1. Zadanie .......................................................................................................................37
2.2. Ogólna struktura programu ........................................................................................38
2.3. Wypisywanie nieznanej z góry liczby wierszy ..........................................................38
2.4. Wypisywanie wierszy ................................................................................................43
2.5. Połączenie fragmentów programu..............................................................................48
2.6. Zliczanie .....................................................................................................................52
2.7. Podsumowanie ...........................................................................................................54
Rozdział 3. Przetwarzanie porcji danych .............................................................. 61
3.1. Obliczanie średniej ocen z egzaminów ......................................................................61
3.2. Mediana zamiast średniej ...........................................................................................68
3.3. Podsumowanie ...........................................................................................................77
Rozdział 4. Organizacja programów i danych ...................................................... 81
4.1. Organizacja przetwarzania .........................................................................................82
4.2. Organizacja danych ....................................................................................................93
4.3. Połączenie fragmentów programu..............................................................................98
4.4. Podział programu wyznaczającego oceny semestralne............................................101
4.5. Ostateczna wersja programu ....................................................................................103
4.6. Podsumowanie .........................................................................................................105
3. 6 C++. Potęga języka. Od przykładu do przykładu
Rozdział 5. Kontenery sekwencyjne i analiza ciągów tekstowych....................... 109
5.1. Dzielenie studentów na grupy ..................................................................................109
5.2. Iteratory ....................................................................................................................114
5.3. Wykorzystanie iteratorów w miejsce indeksów.......................................................118
5.4. Ulepszanie struktury danych pod kątem większej wydajności ................................120
5.5. Kontener typu list .....................................................................................................121
5.6. Wracamy do ciągów typu string...............................................................................124
5.7. Testowanie funkcji split ...........................................................................................127
5.8. Kolekcjonowanie zawartości ciągu typu string........................................................129
5.9. Podsumowanie .........................................................................................................134
Rozdział 6. Korzystanie z algorytmów biblioteki standardowej........................... 141
6.1. Analiza ciągów znakowych......................................................................................142
6.2. Porównanie metod wyznaczania ocen......................................................................151
6.3. Klasyfikacja studentów — podejście drugie............................................................159
6.4. Algorytmy, kontenery, iteratory...............................................................................163
6.5. Podsumowanie .........................................................................................................164
Rozdział 7. Stosowanie kontenerów asocjacyjnych ........................................... 169
7.1. Kontenery obsługujące szybkie wyszukiwanie........................................................169
7.2. Zliczanie wyrazów ...................................................................................................171
7.3. Generowanie tabeli odsyłaczy..................................................................................173
7.4. Generowanie prostych zdań .....................................................................................176
7.5. Słowo o wydajności .................................................................................................184
7.6. Podsumowanie .........................................................................................................185
Rozdział 8. Pisanie funkcji uogólnionych.............................................................. 189
8.1. Czym jest funkcja uogólniona? ................................................................................189
8.2. Niezale ność od struktur danych..............................................................................194
8.3. Iteratory wejściowe i wyjściowe ..............................................................................202
8.4. Wykorzystanie iteratorów dozwiększeniaelastycznościprogramów................................204
8.5. Podsumowanie .........................................................................................................205
Rozdział 9. Definiowanie własnych typów ......................................................... 209
9.1. Rewizja typu Student_info .......................................................................................209
9.2. Typy definiowane przez u ytkownika .....................................................................210
9.3. Ochrona składowych ................................................................................................214
9.4. Klasa Student_info ...................................................................................................219
9.5. Konstruktory.............................................................................................................219
9.6. Stosowanie klasy Student_info ................................................................................222
9.7. Podsumowanie .........................................................................................................223
Rozdział 10. Zarządzanie pamięcią i niskopoziomowymi strukturami danych........ 227
10.1. Wskaźniki i tablice .................................................................................................228
10.2. Literały łańcuchowe — powtórka ..........................................................................235
10.4. Argumenty funkcji main ........................................................................................238
10.5. Odczyt i zapis plików.............................................................................................239
10.6. Trzy tryby zarządzania pamięcią............................................................................242
10.7. Podsumowanie .......................................................................................................245
Rozdział 11. Definiowanie abstrakcyjnych typów danych ........................................ 249
11.1. Klasa Vec ...............................................................................................................249
11.2. Implementacja klasy Vec .......................................................................................250
11.3. Kontrola operacji kopiowania ................................................................................258
11.4. Pamięć dynamiczna w klasie Vec ..........................................................................267
11.5. Elastyczne zarządzanie pamięcią ...........................................................................269
11.6. Podsumowanie .......................................................................................................275
4. Spis treści 7
Rozdział 12. Obiekty typów definiowanych przez użytkownika jako wartości........ 279
12.1. Prosta klasa ciągów ................................................................................................280
12.2. Konwersje automatyczne .......................................................................................281
12.3. Operacje wykonywane na klasie Str ......................................................................283
12.4. Ryzykowne konwersje ...........................................................................................290
12.5. Operatory konwersji...............................................................................................292
12.6. Konwersje a zarządzanie pamięcią............................................................................293
12.7. Podsumowanie .......................................................................................................295
Rozdział 13. Dziedziczenie i wiązanie dynamiczne............................................... 299
13.1. Dziedziczenie .........................................................................................................299
13.2. Polimorfizm i funkcje wirtualne ............................................................................305
13.3. Rozwiązanie zadania z u yciem dziedziczenia......................................................310
13.4. Prosta klasa manipulatora.......................................................................................316
13.5. Stosowanie klasy manipulatora..............................................................................321
13.6. Niuanse...................................................................................................................323
13.7. Podsumowanie .......................................................................................................324
Rozdział 14. Automatyczne (prawie) zarządzanie pamięcią.................................. 329
14.1. Manipulatory kopiujące obiekty docelowe ............................................................330
14.2. Manipulatory zliczające odwołania.............................................................................337
14.3. Manipulatory z opcją współu ytkowania danych ..................................................340
14.4. Ulepszanie manipulatorów.....................................................................................342
14.5. Podsumowanie .......................................................................................................346
Rozdział 15. Obrazki znakowe — podejście drugie.............................................. 347
15.1. Projekt ....................................................................................................................348
15.2. Implementacja ........................................................................................................357
15.3. Podsumowanie .......................................................................................................368
Rozdział 16. Co dalej?....................................................................................... 371
16.1. Korzystaj z posiadanych narzędzi ..........................................................................371
16.2. Pogłębiaj wiedzę ....................................................................................................373
Dodatek A Tajniki języka................................................................................. 375
A.1. Deklaracje................................................................................................................375
A.2. Typy.........................................................................................................................380
A.3. Wyra enia................................................................................................................388
A.4. Instrukcje .................................................................................................................391
Dodatek B Opis biblioteki ............................................................................... 395
B.1. Wejście i wyjście .....................................................................................................396
B.2. Kontenery i iteratory................................................................................................399
B.3. Algorytmy................................................................................................................411
Skorowidz......................................................................................417
5. Rozdział 6.
Korzystanie z algorytmów
biblioteki standardowej
W rozdziale 5. widzieliśmy, e wiele operacji wykonywanych na kontenerach da się
zastosować do więcej ni jednego typu kontenera. Przykładowo, typy XGEVQT, UVTKPI
i NKUV pozwalają na realizację operacji wstawiania elementów za pośrednictwem me-
tody KPUGTV i usuwania elementów metodą GTCUG. Operacje te realizowane są za po-
średnictwem identycznego we wszystkich trzech przypadkach interfejsu. Dzięki temu
wiele z operacji charakterystycznych dla kontenerów da się wykonać równie wobec
obiektów typu UVTKPI.
Ka dy kontener — równie klasa UVTKPI — udostępnia skojarzone z danym typem kon-
tenera klasy iteratorów, za pośrednictwem których mo na wybierać elementy z konte-
nera. Tu znów biblioteka standardowa troszczy się o to, aby ka dy z udostępnianych
iteratorów pozwalała na realizację pewnych operacji za pośrednictwem wspólnego dla
wszystkich iteratorów interfejsu. Dla przykładu, operator
daje się zastosować wobec
iteratora dowolnego typu i zawsze oznacza przesunięcie iteratora do następnego elementu
kontenera; operator
6. słu y z kolei do odwoływania się do elementu skojarzonego z ite-
ratorem, niezale nie od typu tego ostatniego.
W bie ącym rozdziale zobaczymy, w jaki sposób biblioteka standardowa wykorzystuje
koncepcję wspólnego interfejsu w udostępnianiu zbioru tak zwanych standardowych
algorytmów. Korzystając z tych algorytmów, unikamy pisania i przepisywania wcią
tego samego kodu dla ró nych struktur danych. Co wa niejsze, mo emy dzięki nim
pisać programy prostsze i mniejsze ni gdybyśmy wszystkie algorytmy implementowali
sami — niekiedy ró nica rozmiarów i prostoty oprogramowania w wyniku zastosowania
algorytmów standardowych mo e być ogromna.
Algorytmy, podobnie jak iteratory i kontenery, równie wykorzystują konwencję spój-
nego interfejsu. Spójność ta pozwala nam ograniczyć naukę do kilku algorytmów i na
zastosowanie zdobytych doświadczeń w pracy z pozostałymi algorytmami. W tym roz-
dziale do rozwiązywania problemów związanych z przetwarzaniem ciągów typu UVTKPI
i ocen studentów wykorzystamy kilka standardowych algorytmów. Przy okazji nauczy-
my się korzystać z większości kluczowych koncepcji algorytmów biblioteki standardowej.
7. 26 Accelerated C++. Practical Programming by Example
O ile w tekście nie będzie zaznaczone inaczej, wszystkie prezentowane w tym rozdziale
algorytmy definiowane będą w nagłówku CNIQTKVJO .
6.1. Analiza ciągów znakowych
W §5.8.2/132 wykorzystywaliśmy do konkatenacji dwóch obrazków znakowych nastę-
pującą pętlę:
HQT
XGEVQTUVTKPI EQPUVKVGTCVQT KV DQVVQODGIKP
KV DQVVQOGPF
KV
TGVRWUJADCEM
8. KV
Stwierdziliśmy, e pętla ta odpowiada czynności wstawienia kopii elementów kontenera
DQVVQO na koniec kontenera TGV, która to czynność w przypadku kontenerów typu XGEVQT
mo e zostać zrealizowana bezpośrednio:
TGVKPUGTV
TGVGPF
DQVVQODGIKP
DQVVQOGPF
Niniejsze zadanie da się jednak rozwiązać jeszcze bardziej ogólnie — mo na bowiem
oddzielić kopiowanie elementów od ich wstawiania na koniec kontenera, jak poni ej:
EQR[
DQVVQODGIKP
DQVVQOGPF
DCEMAKPUGTVGT
TGV
W tym przykładzie EQR[ jest algorytmem uogólnionym, a DCEMAKPUGTVGT jest przykła-
dem adaptora.
Algorytm uogólniony to algorytm, który nie jest częścią definicji jakiegokolwiek kon-
kretnego kontenera, a o sposobie dostępu do przetwarzanych danych decyduje na pod-
stawie typów argumentów. Algorytmy uogólnione biblioteki standardowej przyjmują
zwykle w liście argumentów wywołania iteratory, za pośrednictwem których odwołują
się do manipulowanych elementów w kontenerach źródłowych. Dla przykładu, algorytm
EQR[ przyjmuje trzy iteratory, którym przypiszemy nazwy DGIKP, GPF i QWV i kopiuje ele-
menty w zakresie =DGIKP GPF do miejsca wskazywanego przez QWV, w miarę potrze-
by rozszerzając kontener docelowy. Innymi słowy, konstrukcja:
EQR[
DGIKP GPF QWV
jest co do efektu równowa na konstrukcji:
YJKNG
DGIKP GPF
10. DGIKP
z tym, e powy sza instrukcja YJKNG zmienia wartości iteratorów, a algorytm EQR[ tego
nie robi.
Zanim przejdziemy do omawiania adaptorów iteratorów, powinniśmy zwrócić uwagę
na wykorzystanie w powy szej pętli operatora inkrementacji w postaci przyrostkowej.
Operatory przyrostkowe ró nią się od przedrostkowych tym, e wyra enie DGIKP
zwraca kopię oryginalnej wartości DGIKP, a zwiększenie wartości DGIKP stanowi efekt
uboczny operacji. Innymi słowy, kod:
KV DGIKP
11. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 27
jest równowa ny kodowi:
KV DGIKP
DGIKP
Operator inkrementacji ma priorytet identyczny z priorytetem operatora
12. ; oba te ope-
ratory są te operatorami łącznymi prawostronnie, co oznacza, e
18. DGIKP
QWV
DGIKP _
Wróćmy teraz do adaptorów iteratorów, które są, zasadniczo rzecz biorąc, funkcjami
zwracającymi iteratory, których właściwości są związane z argumentami wywołania.
Adaptory iteratorów są definiowane w nagłówku KVGTCVQT . Najpowszechniej wyko-
rzystywanym adaptorem jest DCEMAKPUGTVGT, który przyjmuje jako argument wywoła-
nia kontener i zwraca iterator, który zastosowany w operacji wstawiania wskazuje na
miejsce kolejnego elementu. Przykładowo więc DCEMAKPUGTVGT
TGV jest iteratorem, któ-
ry wykorzystany jako iterator elementu docelowego operacji wstawiania spowoduje
wstawienie elementu na koniec kontenera. Stąd:
EQR[
DQVVQODGIKP
DQVVQOGPF
DCEMAKPUGTVGT
TGV
kopiuje wszystkie elementy kontenera DQVVQO, dołączając ich kopie na koniec kontenera
TGV. Po zakończeniu działania funkcji rozmiar kontenera TGV zostanie zatem zwiększony
o wielkość DQVVQOUKG
.
Zauwa my, e nie mo na wykonać wywołania:
błąd — TGV nie jest iteratorem
EQR[
DQVVQODGIKP
DQVVQOGPF
TGV
a to dlatego, e trzecim parametrem funkcji EQR[ musi być iterator, a w wywołaniu
w miejsce odpowiedniego argumentu przekazano kontener. Podobnie niemo liwe jest
wykonanie kodu:
błąd — brak elementu pod wskazaniem GPFTGV
EQR[
DQVVQODGIKP
DQVVQOGPF
TGVGPF
Tutaj błąd jest mniej oczywisty, poniewa dzięki zgodności typów argumentów wywo-
łanie takie zostanie przyjęte przez kompilator. Błąd ujawni się dopiero przy wykonywaniu
powy szego kodu — na początek funkcja EQR[ spróbuje przypisać skopiowaną wartość
do elementu wskazywanego iteratorem TGVGPF
, podczas gdy wiemy, e TGVGPF
to odniesienie do nieistniejącego elementu za ostatnim elementem kontenera. Sposób
działania programu w takiej sytuacji jest całkowicie niezdefiniowany.
Skąd taka definicja funkcji EQR[? Otó oddzielenie koncepcji kopiowania od zwiększania
rozmiaru kontenera pozwala programistom na dokonywanie wyboru operacij w zale ności
od potrzeb. Przydaje się to, na przykład, w sytuacji, kiedy zachodzi potrzeba skopiowania
elementów do kontenera bez zmieniania jego rozmiaru (a więc z nadpisaniem bie ącej
zawartości kontenera). W innym przykładzie, prezentowanym zresztą w §6.2.2/154,
dzięki adaptorowi DCEMAKPUGTVGT mo na dołączać do kontenera elementy, które nie są
prostymi kopiami elementów innego kontenera.
19. 28 Accelerated C++. Practical Programming by Example
6.1.1. Inna implementacja funkcji split
Inną funkcją, którą moglibyśmy zmodyfikować pod kątem wykorzystania algorytmów
standardowych, jest funkcja URNKV, prezentowana w §5.6/125. Najtrudniejsze w pierwot-
nej wersji funkcji było kontrolowanie indeksów ograniczających kolejne wyrazy ciągu
wejściowego. Indeksy te mo emy zastąpić iteratorami i zaprząc do pracy algorytmy
biblioteki standardowej:
zwraca VTWG, je eli argument jest znakiem odstępu; w przeciwnym przypadku zwraca HCNUG
DQQN URCEG
EJCT E
]
TGVWTP KUURCEG
E
_
zwraca HCNUG, je eli argument jest znakiem odstępu; w przeciwnym przypadku zwraca VTWG
DQQN PQVAURCEG
EJCT E
]
TGVWTP KUURCEG
E
_
XGEVQTUVTKPI URNKV
EQPUV UVTKPI UVT
]
V[RGFGH UVTKPIEQPUVAKVGTCVQT KVGT
XGEVQTUVTKPI TGV
KVGT K UVTDGIKP
YJKNG
K UVTGPF
]
pomiń wprowadzające znaki odstępu
K HKPFAKH
K UVTGPF
PQVAURCEG
znajdź koniec bie ącego wyrazu
KVGT L HKPFAKH
K UVTGPF
URCEG
kopiuj znaki z zakresu =K L
KH
K UVTGPF
TGVRWUJADCEM
UVTKPI
K L
K L
_
TGVWTP TGV
_
W kodzie nowej wersji funkcji widać sporo nowości wymagających objaśnienia. W grun-
cie rzeczy jednak powy sza implementacja stanowi nieco inne wcielenie dotychcza-
sowego algorytmu, wykorzystującego K i L do wyznaczania granic odszukanego wyrazu
ciągu UVT, zgodnie z wytycznymi z §5.6/125. Po znalezieniu słowa, jego kopia jest do-
łączana do kontenera TGV.
Tym razem jednak K oraz L są iteratorami, a nie indeksami. Do wygodnego posługiwa-
nia się typem iteraotra wykorzystaliśmy definicję V[RGFGH, dzięki czemu później mo -
na było korzystać z nazwy typu KVGT w miejsce nazwy UVTKPIEQPUVAKVGTCVQT. I choć
typ UVTKPI nie obsługuje wszystkich operacji charakterystycznych dla kontenerów, ob-
sługuje iteratory, dzięki czemu mo emy w stosunku do znaków umieszczonych w ciągu
UVTKPI wykorzystywać algorytmy biblioteki standardowej, podobnie, jak czyniliśmy to
w odniesieniu do elementów kontenera typu XGEVQT.
20. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 29
Wykorzystywanym w tym wcieleniu funkcji algorytmem jest HKPFAKH. Pierwszymi
dwoma argumentami wywołania tego algorytmu są iteratory ograniczające analizowany
ciąg. Trzeci argument jest predykatem sprawdzającym przekazany argument i zwraca-
jącym wartość VTWG bądź HCNUG. Funkcja HKPFAKH wywołuje predykat dla ka dego ele-
mentu we wskazanym zbiorze, przerywając działanie w momencie napotkania pierw-
szego elementu spełniającego predykat.
Biblioteka standardowa udostępnia funkcję KUURCEG, która sprawdza, czy przekazany ar-
gumentem znak nale y do grupy znaków odstępu. Funkcja ta jest jednak przecią ona
pod kątem obsługi języków takich jak, na przykład, japoński, korzystających z rozsze-
rzonego typu znaku YEJCTAV (patrz §1.3/32). Nie jest łatwo przekazać funkcję przecią-
oną jako bezpośredni argument szablonu funkcji. Kłopot z takim przekazaniem pole-
ga na tym, e kompilator nie „wie”, której wersji funkcji przecią onej u yć w wywołaniu
szablonu funkcji; nie mo e tego rozstrzygnąć na podstawie argumentów wywołania
funkcji przecią onej, poniewa w wywołaniu argumentów tych nie ma. Z tego wzglę-
du udostępniliśmy własny predykat dla algorytmu HKPFAKH, a konkretnie dwa takie pre-
dykaty: URCEG i PQVAURCEG; dzięki nim staje się jasne, której wersji funkcji KUURCEG ma
u yć kompilator.
Pierwsze wywołanie funkcji HKPFAKH wyszukuje znak niebędący znakiem odstępu roz-
poczynający kolejny wyraz. Pamiętajmy, e znaki odstępów mogą znajdować się rów-
nie przed pierwszym z wyrazów. Tych znaków nie chcemy wyprowadzać na wyjście.
Po zakończeniu pierwszego wywołania funkcji HKPFAKH K wskazuje pierwszy niebędący
odstępem znak ciągu UVT. Wskazanie to wykorzystywane jest w drugim wywołaniu funk-
cji HKPFAKH, która z kolej wyszukuje pierwszy znak odstępu za pozycją K i przed koń-
cem ciągu. Je eli funkcji nie uda się znaleźć znaku spełniającego predykat, zwraca dru-
gi argument, który w naszym przypadku będzie miał wartość UVTGPF
. Tak więc L
zostanie zainicjalizowane wartością iteratora odnoszącego się do pierwszego znaku za
znakiem K będącym znakiem spacji, ewentualnie wartością UVTGPF
, je eli takiego
znaku w ciągu nie było.
W tej fazie wykonania K i L ograniczają kolejny znaleziony wyraz ciągu UVT. Zostało
ju tylko skorzystanie z wartości iteratorów do skopiowania podciągu z ciągu UVT do
kontenera TGV. W poprzedniej wersji funkcji URNKV do tego zadania wytypowana została
funkcja UVTKPIUWDUVT. Poniewa jednak w nowej wersji funkcji URNKV nie mamy ju
indeksów, a jedynie iteratory, a funkcja UWDUVT nie jest przecią ona dla argumentów te-
go typu, musimy skonstruować podciąg typu UVTKPI jako kopię ograniczonego iterato-
rami ciągu UVT. Realizujemy to w wyra eniu UVTKPI
K L, które wygląda podobnie do
definicji zmiennej URCEGU pokazanej w §1.2/30. W tym przykładzie obiekt typu UVTKPI
inicjalizowany jest kopią znaków w zakresie =K L. Obiekt ten jest następnie za po-
średnictwem metody RWUJADCEM kierowany do kontenera TGV.
Warto wskazać, e nowa wersja programu pomija testowanie indeksu K pod kątem zrów-
nania się z UVTUKG
. Nie ma te odpowiedników tych testów porównujących itera-
tory z UVTGPF
. Przyczyną tego stanu rzeczy jest fakt, e algorytmy biblioteki stan-
dardowej są zaprojektowane i zaimplementowane z uwzględnieniem obsługi wywołań
z przekazaniem zakresu pustego. Je eli, na przykład, w którymś momencie pierwsze
z wywołań HKPFAKH ustawi wartość iteratora K na UVTGPF
, wtedy nie ma konieczności
21. 30 Accelerated C++. Practical Programming by Example
wykrywania tego faktu przed kolejnym wywołaniem funkcji HKPFAKH z tym iteratorem
— HKPFAKH wykryje fakt przekazania ciągu pustego =K UVTGPF
i zwróci w takim
przypadku UVTGPF
, sygnalizując jednocześnie brak spełnienia predykatu.
6.1.2. Palindromy
Kolejnym zadaniem związanym z manipulowaniem ciągami, do którego realizacji mo-
emy wykorzystać algorytmy biblioteki standardowej, jest sprawdzanie, czy zadany wy-
raz jest palindromem. Palindromy to wyrazy, czytane tak samo w przód i wspak. Przy-
kłady palindromów to: „kajak”, „oko”, „Anna”, „potop” czy „radar”.
Oto rozwiązanie postawionego zadania:
DQQN KUARCNKPFTQOG
EQPUV UVTKPI
]
TGVWTP GSWCN
UDGIKP
UGPF
UTDGIKP
_
Wyra enie wartości zwracanej w powy szej funkcji korzysta z wywołania GSWCN i me-
tody TDGIKP; obu tych funkcji nigdy dotąd nie wykorzystywaliśmy.
Podobnie jak metoda DGIKP, TDGIKP zwraca iterator, tyle e iterator ten rozpoczyna wska-
zanie od ostatniego elementu kontenera, a jego zwiększanie powoduje cofanie wskazania
do poprzednich elementów kontenera.
Funkcja GSWCN porównuje dwie sekwencje znaków i określa, czy sekwencje te zawierają
identyczne znaki. Pierwsze dwa argumenty wywołania to iteratory ograniczające pierw-
szą z sekwencji. Trzeci argument to iterator odnoszący się do początku sekwencji dru-
giej. Funkcja GSWCN zakłada, e sekwencja numer dwa ma rozmiar identyczny z roz-
miarem sekwencji pierwszej, stąd brak konieczności określania iteratora kończącego
drugą sekwencję. Jako e trzecim argumentem wywołania, a więc początkiem drugiej
sekwencji porównania, jest UTDGIKP
, efektem wywołania jest porównanie znaków
z początku kontenera (ciągu) ze znakami końca kontenera. Funkcja GSWCN porównuje
kolejno pierwszy znak ciągu U z ostatnim znakiem, następnie drugi znak ciągu ze zna-
kiem przedostatnim i tak dalej. Działanie takie idealnie spełnia warunki rozwiązania
postawionego zadania.
6.1.3. Wyszukiwanie w tekście adresów URL
W ramach ostatniego przykładu przetwarzania ciągów znakowych napiszemy funkcję,
która w przekazanym ciągu typu UVTKPI wyszuka adresy zasobów sieci WWW, zwane
te identyfikatorami URL. Funkcję taką mo na wykorzystać do przeglądania dokumentu
(po ich uprzednim skopiowaniu do zmiennej typu UVTKPI) w poszukiwaniu zawartych
w tym dokumencie identyfikatorów URL. Funkcja powinna odnaleźć wszystkie identy-
fikatory URL występujące w tekście dokumentu.
Identyfikator URL jest ciągiem znaków postaci:
nazwa-protokołunazwa-zasobu
22. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 31
gdzie nazwa-protokołu mo e zawierać wyłącznie litery, gdy nazwa-zasobu mo e skła-
dać się z liter, cyfr oraz rozmaitych znaków przestankowych i specjalnych. Nasza funk-
cja powinna przyjmować ciąg typu UVTKPI i wyszukiwać w nim wystąpienia sekwencji
znaków . W przypadku odnalezienia takiego zestawu znaków funkcja powinna od-
szukać poprzedzającą go nazwę protokołu i następującą po nim nazwę zasobu.
Jako e projektowana funkcja powinna odnaleźć wszystkie identyfikatory URL wy-
stępujące w tekście, wartością zwracaną powinien być kontener typu XGEVQTUVTKPI ,
w którym ka dy z elementów reprezentowałby pojedynczy identyfikator URL. Dzia-
łanie funkcji opiera się na przesuwaniu iteratora wzdłu przekazanego ciągu i wyszu-
kiwanie w tym ciągu znaków . W momencie odnalezienia ciągu funkcja wyszu-
kuje wstecz wyraz będący nazwą protokołu i w przód ciąg będący nazwą zasobu URL:
XGEVQTUVTKPI HKPFAWTNU
EQPUV UVTKPI U
]
XGEVQTUVTKPI TGV
V[RGFGH UVTKPIEQPUVAKVGTCVQT KVGT
KVGT D UDGIKP
G UGPF
przejrzyj cały ciąg wejściowy
YJKNG
D G ]
poszukaj jednego lub kilku znaków, po których znajduje się podciąg
D WTNADGI
D G
jeśli udało się znaleźć podciąg
KH
D G ]
pobierz resztę URL-a
KVGT CHVGT WTNAGPF
D G
zapamiętaj znaleziony URL
TGVRWUJADCEM
UVTKPI
D G
zwiększ D i szukaj następnych identyfikatorów
D CHVGT
_
_
TGVWTP TGV
_
Funkcja zaczyna się od zadeklarowania TGV jako kontenera typu XGEVQT, przechowu-
jącego docelowo znalezione identyfikatory URL, oraz od zdefiniowania iteratorów ogra-
niczających wejściowy ciąg typu UVTKPI. Musimy jeszcze napisać funkcje WTNADGI
i WTNAGPF. Pierwsza z nich będzie wyszukiwać początek ka dego z identyfikatorów URL
przekazanego ciągu i ewentualnie zwracać iterator ustawiony na początek podciągu
nazwa-protokołu; je eli w ciągu wejściowym nie uda się znaleźć URL-a, funkcja WTNA
DGI powinna zwrócić drugi argument wywołania (tutaj G), sygnalizując w ten sposób
niepowodzenie.
Gdy WTNADGI wyszuka początek identyfikatora URL, resztą zajmuje się WTNAGPF.
Funkcja ta przeszukuje ciąg od wskazanej pozycji początkowej a do osiągnięcia końca
ciągu wejściowego albo znalezienia znaku, który nie mo e być częścią identyfikatora
URL. Funkcja zwraca iterator ustawiony na pozycję następną za pozycją ostatniego zna-
ku identyfikatora.
23. 32 Accelerated C++. Practical Programming by Example
Po wywołaniu funkcji WTNADGI i WTNAGPF iterator D powinien odnosić się do początku
znalezionego identyfikatora URL, a iterator CHVGT powinien wskazywać pozycję na-
stępną za pozycją ostatniego znaku identyfikatora, jak na rysunku 6.1.
Rysunek 6.1.
Podział obowiązków
w zadaniu wyszukiwania
identyfikatora URL
Ze znaków znajdujących się we wskazanym iteratorami zakresie konstruowany jest nowy
ciąg typu UVTKPI umieszczany w kontenerze TGV.
W tym momencie mo na ju tylko zwiększyć wartość iteratora D i przejść do wyszuki-
wania następnego identyfikatora. Poniewa identyfikatory nie mogą na siebie nachodzić,
D mo na ustawić na znak następny za ostatnim znakiem właśnie znalezionego identyfi-
katora URL; pętlę YJKNG nale y kontynuować a do przetworzenia wszystkich znaków
ciągu wejściowego. Po wyjściu z tej pętli zwracany przez funkcję kontener TGV zawierać
będzie wszystkie URL-e występujące w ciągu wejściowym.
Pora na zastanowienie się nad implementacją funkcji WTNADGI i WTNAGPF. Na pierwszy
ogień pójdzie funkcja prostsza, a więc WTNAGPF:
UVTKPIEQPUVAKVGTCVQT WTNAGPF
UVTKPIEQPUVAKVGTCVQT D UVTKPIEQPUVAKVGTCVQT G
]
TGVWTP HKPFAKH
D G PQVAWTNAEJCT
_
Funkcja przegląda kolejne znaki wskazanego zakresu, poddając je analizie za pośred-
nictwem funkcji HKPFAKH, którą poznaliśmy w §6.1.1/144. Predykat przekazany w wy-
wołaniu funkcji HKPFAKH, PQVAWTNAEJCT, musimy napisać własnoręcznie. Powinien on
zwracać wartość VTWG dla znaku, który nie mo e znaleźć się w identyfikatorze URL:
DQQN PQVAWTNAEJCT
EJCT E
]
znaki (poza znakami alfanumerycznymi) dozwolone w identyfikatorach URL
UVCVKE EQPUV UVTKPI WTNAEJ `! A
sprawdź, czy E jest dozwolonym znakiem URL
TGVWTP
KUCNPWO
E ^^ HKPF
WTNAEJDGIKP
WTNAEJGPF
E WTNAEJGPF
_
Powy sza funkcja, choć niepozorna, wykorzystuje kilka nowych elementów. Po pierw-
sze, w definicji ciągu znaków dozwolonych w identyfikatorze URL pojawiło się słowo
UVCVKE. Zmienne lokalne deklarowane jako statyczne (właśnie ze słowem UVCVKE) są
zachowywane pomiędzy wywołaniami funkcji. Zmienna typu UVTKPI o nazwie WTNAEJ
będzie więc konstruowana i inicjalizowana jedynie podczas realizacji pierwszego wy-
wołania funkcji PQVAWTNAEJCT. Kolejne wywołania zastaną gotową wartość typu UVTKPI.
Dodatkowo słowo EQPUV zapewnia niezmienność wartości zmiennej WTNAEJ po jej ini-
cjalizacji.
24. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 33
Funkcja PQVAWTNAEJCT wykorzystuje wywołanie funkcji KUCNPWO zdefiniowanej w nagłów-
ku EEV[RG . Funkcja ta sprawdza, czy przekazany znak jest znakiem alfanumerycznym
(czyli czy jest literą lub cyfrą).
Wykorzystane w tej funkcji wywołanie HKPF jest kolejnym algorytmem biblioteki stan-
dardowej. Jego działanie jest podobne do HKPFAKH z tym, e zamiast wywoływać predy-
kat, funkcja HKPF samodzielnie porównuje kolejne znaki z trzecim argumentem wywo-
łania. Je eli w sekwencji określonej dwoma pierwszymi argumentami znajduje się
wartość określona argumentem trzecim, funkcja zwraca iterator ustawiony na miejsce
pierwszego wystąpienia zadanej wartości w sekwencji. W przypadku nieodnalezienia za-
danej wartości funkcja HKPF zwraca drugi argument.
Teraz widać, jak dokładnie działa funkcja PQVAWTNAEJCT. Poniewa wartość zwracana
stanowi negację całego wyra enia, PQVAWTNAEJCT zwraca wartość HCNUG, je eli zadany
znak oka e się literą, cyfrą bądź znakiem dozwolonym w identyfikatorze URL, a okre-
ślonym w ciągu WTNAEJ. Dla ka dej innej wartości argumentu E funkcja zwraca war-
tość VTWG.
Pora na najtrudniejsze — implementację funkcji WTNADGI. Funkcja ta jest nieco zagma-
twana, poniewa musi obsługiwać potencjalną sytuację zawierania się w ciągu wejścio-
wym sekwencji w kontekście, który wyklucza istnienie wokół tej sekwencji identy-
fikatora URL. W praktyce implementacja takiej funkcji wykorzystywałaby zapewne
zdefiniowaną uprzednio listę dozwolonych nazw protokołów. My, dla uproszczenia,
ograniczymy się do zagwarantowania, e sekwencję poprzedza podciąg jednego
lub więcej znaków i przynajmniej jeden znak znajduje się za tą sekwencją.
UVTKPIEQPUVAKVGTCVQT WTNADGI
UVTKPIEQPUVAKVGTCVQT D UVTKPIEQPUVAKVGTCVQT G
]
UVCVKE EQPUV UVTKPI UGR
V[RGFGH UVTKPIEQPUVAKVGTCVQT KVGT
K sygnalizuje odnalezienie separatora
KVGT K D
YJKNG
K UGCTEJ
K G UGRDGIKP
UGRGPF
G ]
upewnij się, e separator nie rozpoczyna się od początku ciągu
KH
K D K
UGRUKG
G ]
DGI zaznacza początek nazwy-protokołu
KVGT DGI K
YJKNG
DGI D KUCNRJC
DGI=?
DGI
czy za i przed separatorem znajduje się przynajmniej po jednym znaku?
KH
DGI K PQVAWTNAEJCT
K=UGRUKG
?
TGVWTP DGI
_
25. 34 Accelerated C++. Practical Programming by Example
odnaleziony separator nie jest częścią URL-a; zwiększ i poza pozycję ostatniego
znaku sepraratora
K
UGRUKG
_
TGVWTP G
_
Najprostszą częścią tej funkcji jest jej nagłówek. Wiadomo, e w wywołaniu przeka-
zane zostaną dwa iteratory określające zakres przetwarzanego ciągu i e funkcja ma
zwrócić iterator ustawiony na początek pierwszego z odnalezionych identyfikatorów
URL. Oczywista jest te deklaracja lokalnej zmiennej typu UVTKPI, w której przecho-
wywane są znaki składające się na wyró niający identyfikator URL separator nazwy
protokołu i nazwy zasobu. Podobnie, jak w funkcji PQVAWTNAEJCT (§7.1.1/148), zmienna
ta jest zmienną statyczną i stałą. Nie będzie więc mo na zmieniać w funkcji wartości
zmiennej — zostanie ona ustalona przy pierwszym wykonaniu funkcji WTNADGI.
Działanie funkcji opiera się na ustaleniu wartości dwóch iteratorów w zakresie wy-
znaczanym iteratorami D i G. Iterator K ma wskazywać początek separatora URL, a ite-
rator DGI początek znajdującego się przed separatorem podciągu zawierającego nazwę
protokołu (rysunek 6.2).
Rysunek 6.2.
Pozycjonowanie
iteratorów w funkcji
url_beg
Na początek funkcja odnajduje pierwsze wystąpienie separatora, wykorzystując wywo-
łanie UGCTEJ (funkcję biblioteki standardowej), którego wcześniej nie stosowaliśmy.
Funkcja UGCTEJ przyjmuje dwie pary iteratorów: pierwsza para odnosi się do sekwencji,
w której następuje wyszukiwanie, druga określa sekwencję wyszukiwaną. Podobnie jak
ma to miejsce w przypadku pozostałych funkcji biblioteki standardowej, je eli funkcji
UGCTEJ nie uda się odnaleźć zadanego ciągu, zwraca iterator wskazujący na koniec prze-
szukiwanego ciągu. Po zakończeniu realizacji funkcji UGCTEJ iterator K mo e przyjąć
dwie wartości — albo będzie wskazywał element następny za ostatnim ciągu wejścio-
wego, albo zawierać będzie pozycję dwukropka rozpoczynającego separator .
Po odnalezieniu separatora nale y odszukać litery składające się na nazwę protokołu.
Najpierw nale y jednak sprawdzić, czy separator nie znajduje się na samym początku
albo na samym końcu przeszukiwanego ciągu; w obu tych przypadkach mamy do czy-
nienia z niepełnym identyfikatorem URL, poniewa identyfikator taki powinien zawierać
przynajmniej po jednym znaku z obu stron separatora. Je eli separator rokuje mo liwo-
ści dopasowania identyfikatora URL, nale y spróbować ustawić iterator DGI. W we-
wnętrznej pętli YJKNG iterator DGI jest przesuwany w tył, a do momentu, gdy dotrze do
początku ciągu albo do pierwszego znaku niebędącego znakiem alfanumerycznym. Wi-
dać tutaj zastosowanie dwóch nowych elementów kodu: pierwszym jest wykorzystanie
faktu, e je eli kontener obsługuje indeksowanie, to podobną obsługę definiują iteratory
tego kontenera. Innymi słowy, DGI=? jest znakiem bezpośrednio poprzedzającym znak
wskazywany przez DGI. Zapis DGI=? nale y tu traktować jako skróconą wersję zapisu
26. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 35
27. DGI . O tego typu iteratorach powiemy więcej w §8.2.6/200. Drugi nowy element
to wykorzystanie funkcji KUCNRJC zdefiniowanej w nagłówku EEV[RG biblioteki stan-
dardowej; funkcja ta sprawdza, czy przekazany argument (znak) zawiera literę.
Je eli uda się cofnąć iterator choćby o jeden znak, mo na zało yć, e znak ten tworzy
nazwę protokołu. Przed zwróceniem wartości DGI nale y jednak jeszcze sprawdzić,
czy przynajmniej jeden dopuszczalny znak znajduje się równie po prawej stronie se-
paratora . Ten test jest nieco bardziej skomplikowany. Wiadomo, e w ciągu wej-
ściowym znajduje się przynajmniej jeden znak za separatorem; wiadomo to stąd, e
pozytywnie wypadł test ró ności K
UGRUKG
z wartością G wskazującą koniec
ciągu. Do znaku tego mo emy się odwołać za pośrednictwem K=UGRUKG
?, co od-
powiada zapisowi
28. K
UGRUKG
. Nale y jeszcze sprawdzić, czy znak ten nale y
do znaków dozwolonych w identyfikatorze URL, przekazując ów znak do wywołania
PQVAWTNAEJCT. Funkcja ta zwraca wartość VTWG dla znaków niedozwolonych; po zane-
gowaniu wartości zwracanej dowiemy się, czy przekazany znak jest dozwolony w iden-
tyfikatorze URL.
Je eli separator nie jest częścią poprawnego identyfikatora URL, funkcja zwiększa war-
tość iteratora K i kontynuuje wyszukiwanie.
W prezentowanym kodzie po raz pierwszy znalazł zastosowanie operator dekrementacji
(zmniejszenia o jeden) wymieniony w tabeli operatorów §2.7/54. Operator ten działa po-
dobnie jak operator inkrementacji, tyle e zamiast zwiększać, zmniejsza wartość operan-
du. Równie ten operator mo na stosować jako operator przedrostkowy bądź przyrost-
kowy. Zastosowana tu wersja przedrostkowa zmniejsza wartość operandu i zwraca jego
nową wartość.
6.2. Porównanie metod
wyznaczania ocen
W §4.2/93 zaprezentowaliśmy metodę oceniania studentów w oparciu o ocenę pośred-
nią, ocenę z egzaminu końcowego i medianę ocen zadań domowych. Metoda ta mo e
zostać nadu yta przez sprytnych studentów, którzy rozmyślnie mogą nie wykonywać
niektórych prac domowych. W końcu połowa gorszych ocen nie wpływa na ostateczny
wynik. Wystarczy bowiem odrobić dobrze połowę zadań domowych, aby uzyskać wy-
nik identyczny jak osoba, która tak samo dobrze wykonała wszystkie prace domowe.
Z naszego doświadczenia wynika, e większość studentów nie będzie próbować wy-
korzystywać tej luki w metodzie oceniania. Mieliśmy jednak okazję prowadzić zajęcia
w grupie, której studenci czynili to otwarcie. Zastanawialiśmy się wtedy, czy średnia ocen
studentów którzy omijali prace domowe, mo e być zbli ona do średniej studentów, któ-
rzy sumiennie pracowali w czasie wolnym. Zastanawiając się nad odpowiedzią na to
pytanie, uznaliśmy, e warto być mo e sprawdzić odpowiedź na to pytanie w kontek-
ście dwóch ró nych metod oceniania:
29. 36 Accelerated C++. Practical Programming by Example
Przy u yciu średniej w miejsce mediany (zadania nieodrobione oceniane są
na 0 punktów).
Przy u yciu mediany tylko tych zadań, które student odrobił.
Dla ka dego z tych schematów oceny nale ało porównać medianę ocen studentów,
którzy oddawali wszystkie prace domowe z medianą ocen studentów, którzy pominęli
jedno lub więcej zadań samodzielnych. Mający pomóc w udzieleniu odpowiedzi pro-
gram powinien realizować dwa zadania:
1. Wczytywać wpisy wszystkich studentów i wyodrębniać wpisy tych studentów,
którzy oddali wszystkie prace domowe.
2. Zastosować obie metody oceniania do obu grup; wypisać na urządzeniu
wyjściowym medianę ocen ka dej z grup.
6.2.1. Przetwarzanie wpisów studentów
Pierwszym postawionym zadaniem jest wczytanie i klasyfikacja wpisów studentów.
Na szczęście dysponujemy ju pewnym kodem, który rozwiązywał podobny problem
postawiony w jednym z wcześniejszych rozdziałów. Do wczytania wpisów studentów
mo emy bowiem wykorzystać typ 5VWFGPVAKPHQ z §4.2.1/94 i związaną z obsługą tego
typu funkcję TGCF (§4.2.2/94). Nie mamy natomiast funkcji, która sprawdzałaby liczbę
oddanych prac domowych. Jej napisanie nie stanowi jednak problemu:
DQQN FKFACNNAJY
EQPUV 5VWFGPVAKPHQ U
]
TGVWTP
HKPF
UJQOGYQTMDGIKP
UJQOGYQTMGPF
UJQOGYQTMGPF
_
Funkcja ta sprawdza, czy kontener JQOGYQTM wpisu studenta U zawiera jakiekolwiek
wartości zerowe. Przyjęliśmy tu, e sam fakt oddania pracy domowej jest punktowany,
więc wartości zerowe odpowiadają pracom niezrealizowanym w ogóle. Wartość zwra-
cana przez funkcję HKPF porównywana jest z wartością JQOGYQTMGPF
, jak bowiem
pamiętamy, funkcja HKPF zwraca w przypadku nieodnalezienia zadanej wartości drugi
argument wywołania.
Dzięki dwóm wspomnianym funkcjom implementacja kodu wczytującego i klasyfiku-
jącego wpisy studentów jest znacznie uproszczona. Wystarczy bowiem wczytywać ko-
lejne wpisy, sprawdzać, czy student oddał wszystkie zadania domowe, i w zale ności
od wyniku testu dołączyć wpis do jednego z dwóch kontenerów typu XGEVQT, o nazwach
FKF (dla studentów sumiennych) i FKFPV (dla leniwych). Potem nale y sprawdzić, czy
któryś z kontenerów nie jest przypadkiem pusty, co uniemo liwiłoby dalszą analizę:
XGEVQT5VWFGPVAKPHQ FKF FKFPV
5VWFGPVAKPHQ UVWFGPV
wczytaj wszystkie wpisy, pogrupuj je według kryterium odrobienia prac domowych
YJKNG
TGCF
EKP UVWFGPV ]
KH
FKFACNNAJY
UVWFGPV
FKFRWUJADCEM
UVWFGPV
30. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 37
GNUG
FKFPVRWUJADCEM
UVWFGPV
_
sprawdź, czy oba kontenery zawierają jakieś wpisy
KH
FKFGORV[
]
EQWV CFGP G UVWFGPVÎY PKG QFTQDK YU[UVMKEJ RTCE FQOQY[EJ
TGVWTP
_
KH
FKFPVGORV[
]
EQWV 9U[UE[ UVWFGPEK QFTQDKNK YU[UVMKG RTCEG FQOQYG
TGVWTP
_
Jedyną nowinką w powy szym kodzie jest wywoływanie metody GORV[, zwracającej
wartość VTWG dla kontenera pustego i HCNUG dla kontenera zawierającego jakieś elemen-
ty. Ten sposób sprawdzania zawartości kontenera jest lepszy ni porównywanie roz-
miaru zwracanego przez UKG z zerem, poniewa w przypadku niektórych rodzajów
kontenerów sprawdzenie, czy w kontenerze w ogóle coś się znajduje mo e być reali-
zowane du o szybciej ni policzenie liczby znajdujących się w nim elementów.
6.2.2. Analiza ocen
Umiemy ju wczytać wpisy studentów i sklasyfikować je jako przynale ące do kontene-
ra FKF bądź do kontenera FKFPV. Następne zadanie to analiza wpisów; przed przystą-
pieniem do takiej analizy wypadałoby zastanowić się nad jej zało eniami.
Wiemy, e trzeba będzie wykonać trzy analizy, a ka da z nich ma się składać z dwóch
części, osobno dla studentów, którzy odrobili wszystkie zadania domowe i dla tych, któ-
rzy to zaniedbali. Poniewa analizy obejmować będą dwa zbiory danych, najlepiej by-
łoby zaimplementować je w postaci osobnych funkcji. Jednak e niektóre operacje, takie
jak wydruk zestawienia w ustalonym formacie, realizowane będą wobec par wyników
analiz. Nale y więc zaimplementować w postaci funkcji wydruk zestawienia analizy par
zbiorów wartości.
Najgorsze, e docelowo program powinien wywoływać funkcję, która trzykrotnie (raz
dla ka dego rodzaju analizy) wypisywałaby na urządzeniu wyjściowym wyniki analizy.
Ka da z funkcji analitycznych powinna być wywołana dwukrotnie, raz dla kontenera FKF,
raz dla kontenera FKFPV. Tyle e funkcja generująca zestawienie powinna za ka dym ra-
zem wywoływać inną funkcję analityczną! Jak to zrobić?
Rozwiązaniem najprostszym jest zdefiniowanie trzech funkcji analitycznych i przeka-
zywanie ich kolejno do funkcji generującej wydruk wyników. Argumentów typu funk-
cyjnego ju u ywaliśmy, między innymi przy przekazywaniu funkcji EQORCTG do funkcji
bibliotecznej UQTV (§4.2.2/96). W takim przypadku funkcja generująca zestawienia po-
winna przyjmować pięć argumentów:
Strumień wyjściowy, do którego zapisywane byłyby ciągi wydruku.
Ciąg UVTKPI reprezentujący nazwę analizy.
31. 38 Accelerated C++. Practical Programming by Example
Funkcję analityczną.
Dwa argumenty będące kontenerami typu XGEVQT zawierającymi dane wejściowe
analizy.
Załó my, dla przykładu, e pierwsza analiza, wyznaczająca mediany ocen prac domo-
wych, realizowana jest przez funkcję o nazwie OGFKCPACPCN[UKU. Wyprowadzenie wy-
ników tej analizy w stosunku do obu grup studentów oznaczałoby realizację następu-
jącego wywołania:
YTKVGACPCN[UKU
EQWV OGFKCP OGFKCPACPCN[UKU FKF FKFPV
Zanim zdefiniujemy funkcję YTKVGACPN[UKU powinniśmy zaimplementować funkcję
OGFKCPACPCN[UKU. Funkcja ta powinna przyjmować kontener (typu XGEVQT) wpisów stu-
dentów; na podstawie tych wpisów funkcja powinna obliczać oceny końcowe studen-
tów zgodnie z przyjętą metodą oceniania studentów i zwrócić medianę obliczonych ocen.
Funkcja taka mogłaby mieć postać:
ta funkcja nie całkiem działa
FQWDNG OGFKCPACPCN[UKU
EQPUV XGEVQT5VWFGPVAKPHQ UVWFGPVU
]
XGEVQTFQWDNG ITCFGU
VTCPUHQTO
UVWFGPVUDGIKP
UVWFGPVUGPF
DCEMAKPUGTVGT
ITCFGU ITCFG
TGVWTP OGFKCP
ITCFGU
_
Choć na pierwszy rzut oka funkcja mo e wydawać się skomplikowana, wprowadza tylko
jedną nową funkcję — funkcję VTCPUHQTO. Przyjmuje ona trzy iteratory i jedną funkcję.
Pierwsze dwa iteratory definiują zakres elementów do przetworzenia; trzeci iterator to
iterator kontenera docelowego wyników przetwarzania — w kontenerze tym zapisywa-
ne będą wyniki funkcji przetwarzającej, przekazywanej czwartym argumentem.
Wywołując funkcję VTCPUHQTO, musimy zadbać o to, aby w kontenerze docelowym było
dość miejsca na zachowanie wyników przetwarzania wejściowej sekwencji elementów.
W tym przypadków nie jest to problemem, poniewa kontener docelowy wskazujemy
iteratorem DCEMAKPUGTVGT (patrz §6.1/142), powodującym automatyczne dołączanie wy-
ników działania funkcji VTCPUHQTO do kontenera ITCFGU; kontener ten będzie dzięki zasto-
sowaniu tego iteratora rozszerzany w miarę dodawania kolejnych elementów potrzeby.
Czwartym argumentem wywołania funkcji VTCPUHQTO jest funkcja przekształcająca
(przetwarzająca) elementy wskazane zakresem wejściowym; jest ona wywoływana dla
ka dego elementu z tego zakresu, a wartości zwracane przez funkcję umieszczane są
w kontenerze docelowym. W powy szym przykładzie wywołanie funkcji VTCPUHQTO
oznacza zastosowanie do elementów kontenera UVWFGPVU funkcji ITCFG; wyniki zwracane
przez funkcję ITCFG umieszczane są w kontenerze ITCFGU. Po skompletowaniu w konte-
nerze ITCFGU ocen końcowych studentów, wywołujemy funkcję OGFKCP z §4.1.1/83,
obliczającą medianę wartości przechowywanych w kontenerze ITCFGU.
Jest tylko jeden problem. Zgodnie z uwagą poprzedzającą kod, funkcja w tym kształ-
cie niezupełnie działa.
32. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 39
Przyczyną takiego stanu rzeczy jest to, e mamy kilka przecią onych wersji funkcji
ITCFG. Kompilator nie jest w stanie określić w wywołaniu VTCPUHQTO, o jaką wersję funk-
cji ITCFG mo e chodzić, poniewa w wywołaniu tym nie ma adnych argumentów
funkcji ITCFG. My wiemy, e chodzi o wersję zdefiniowaną w §4.2.2/95. Trzeba
jeszcze znaleźć sposób na przekazanie tej informacji kompilatorowi.
Drugą niedoskonałością powy szego kodu jest to, e funkcja ITCFG zgłasza wyjątek
w przypadku, kiedy student nie ma adnych ocen zadań domowych, tymczasem funkcja
VTCPUHQTO tych wyjątków w aden sposób nie obsługuje. Je eli więc zdarzy się wyją-
tek, realizacja funkcji VTCPUHQTO zostanie zatrzymana, a sterowanie przeniesione do funk-
cji OGFKCPACPCN[UKU. Poniewa funkcja OGFKCPACPCN[UKU równie nie przechwytuje ani
nie obsługuje wyjątków, wyjątek będzie propagowany dalej w górę stosu wywołań funk-
cji. W efekcie równie funkcja OGFKCPACPCN[UKU zostanie przedwcześnie przerwana,
przekazując sterowanie do wywołującego i tak dalej, a wyjątek zostanie przechwycony
odpowiednią klauzulą ECVEJ. Je eli klauzuli takiej zabraknie (z czym mielibyśmy do
czynienia w proponowanej funkcji) przerywane jest działanie całego programu, a na urzą-
dzeniu wyjściowym wyświetlany jest komunikat o zgłoszeniu wątku (albo i nie, zale -
nie od implementacji).
Oba problemy mo emy rozwiązać za pośrednictwem pomocniczej funkcji, która będzie
realizować wywołanie ITCFG wewnątrz instrukcji VT[ oraz zajmie się obsługą ewentual-
nych wyjątków. Poniewa w tej funkcji wywołanie funkcji ITCFG będzie jawne, kompi-
lator (na podstawie argumentów wywołania) nie będzie miał kłopotów z wytypowaniem
wersji funkcji ITCFG do realizacji wywołania:
FQWDNG ITCFGACWZ
EQPUV 5VWFGPVAKPHQ U
]
VT[ ]
TGVWTP ITCFG
U
_ ECVEJ
FQOCKPAGTTQT ]
TGVWTP ITCFG
UOKFVGTO UHKPCN
_
_
Ta funkcja przechwytuje wyjątki zgłaszane w funkcji ITCFG. W przypadku pojawienia
się wyjątku zostanie on obsłu ony w ramach klauzuli ECVEJ. Obsługa polega na wywo-
łaniu funkcji ITCFG z trzecim argumentem o wartości — zało yliśmy przecie , e brak
pracy domowej oznacza zero punktów. Je eli więc dany student nie odrobił adnej z prac,
wtedy ogólna ocena pracy domowej będzie wynosiła równie . Do oceny końcowej
liczone więc będą wyłącznie ocena z egzaminu końcowego i ocena pośrednia.
Mo emy ju przepisać funkcję analityczną tak, aby korzystała z pomocniczego wywo-
łania ITCFGACWZ:
ta wersja działa znakomicie
FQWDNG OGFKCPACPCN[UKU
EQPUV XGEVQT5VWFGPVAKPHQ UVWFGPVU
]
XGEVQTFQWDNG ITCFGU
VTCPUHQTO
UVWFGPVUDGIKP
UVWFGPVUGPF
DCEMAKPUGTVGT
ITCFGU ITCFGACWZ
TGVWTP OGFKCP
ITCFGU
_
33. 40 Accelerated C++. Practical Programming by Example
Znając ju postać funkcji analitycznej, mo emy przejść do zdefiniowania funkcji YTKVGA
CPCN[UKU, która wykorzystuje funkcję analityczną do porównania dwóch grup studentów:
XQKF YTKVGACPCN[UKU
QUVTGCO QWV EQPUV UVTKPI PCOG
FQWDNG CPCN[UKU
EQPUV XGEVQT5VWFGPVAKPHQ
EQPUV XGEVQT5VWFGPVAKPHQ FKF
EQPUV XGEVQT5VWFGPVAKPHQ FKFPV
]
QWV PCOG OGFKCPC
ITWRC UVWFGPVÎY UQNKFP[EJ CPCN[UKU
FKF
OGFKCPC
ITWRC UVWFGPVÎY PKGUQNKFP[EJ CPCN[UKU
FKFPV
GPFN
_
Funkcja ta jest zaskakująco krótka, choć wprowadza kolejne nowości. Pierwszą z nich jest
sposób definiowania parametru reprezentującego funkcję. Definicja parametru CPCN[UKU
wygląda identycznie jak deklaracja funkcji napisanej w §4.3/100 (co prawda w
§10.1.2/230 przekonamy się, e ró nice są większe, ni się wydaje, mo emy je jednak
pominąć jako nie mające wpływu na bie ące omówienie).
Druga nowinka to typ wartości zwracanej przez funkcję — void. Zastosowanie typu XQKF
jest ograniczone między innymi właśnie do definiowania typu wartości zwracanej. Wi-
dząc funkcję zwracającą typ XQKF, widzimy funkcję, która tak naprawdę nie zwraca ad-
nej wartości. Z takiej funkcji wychodzi się za pośrednictwem instrukcji TGVWTP pozba-
wionej wartości, na przykład:
TGVWTP
Wykonanie funkcji zwracającej typ XQKF mo e zostać zakończone równie w wyniku
dotarcia do klamry kończącej kod funkcji. W innych funkcjach takie zakończenie funk-
cji jest niedozwolone; w funkcjach niezwracających wartości mo emy pominąć instruk-
cję TGVWTP.
Teraz mo emy napisać pozostały kod programu:
KPV OCKP
]
studenci, którzy nie odrobili wszystkich zadań domowych
XGEVQT5VWFGPVAKPHQ FKF FKFPV
wczytaj wszystkie wpisy, pogrupuj je według kryterium odrobienia prac domowych
YJKNG
TGCF
EKP UVWFGPV ]
KH
FKFACNNAJY
UVWFGPV
FKFRWUJADCEM
UVWFGPV
GNUG
FKFPVRWUJADCEM
UVWFGPV
_
sprawdź, czy oba kontenery zawierają jakieś wpisy
KH
FKFGORV[
]
EQWV CFGP G UVWFGPVÎY PKG QFTQDK YU[UVMKEJ RTCE FQOQY[EJ
TGVWTP
_
KH
FKFPVGORV[
]
EQWV 9U[UE[ UVWFGPEK QFTQDKNK YU[UVMKG RTCEG FQOQYG
TGVWTP
_
34. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 41
przystąp do analizy
YTKVGACPCN[UKU
EQWV OGFKCPC OGFKCPACPCN[UKU FKF FKFPV
YTKVGACPCN[UKU
EQWV TGFPKC CXGTCIGACPCN[UKU FKF FKFPV
YTKVGACPCN[UKU
EQWV OGFKCPC RTCE QFFCP[EJ QRVKOKUVKEACPCN[UKU FKF FKFPV
TGVWTP
_
Zostało ju tylko uzupełnić program o funkcje CXGTCIGACPCN[UKU i QRVKOKUVKEAOGFKCPA
CPCN[UKU.
6.2.3. Wyznaczanie ocen na podstawie
średniej ocen prac domowych
Funkcja CXGTCIGACPCN[UKU powinna obliczań oceny studentów przy uwzględnieniu nie
mediany, ale wartości średniej ocen prac domowych. Logicznym początkiem imple-
mentacji powinno być napisanie funkcji obliczającej wartość średnią elementów kon-
tenera typu XGEVQT i następnie wykorzystanie jej w miejsce funkcji OGFKCP w funkcji
obliczającej ocenę końcową (ITCFG):
FQWDNG CXGTCIG
EQPUV XGEVQTFQWDNG X
]
TGVWTP CEEWOWNCVG
XDGIKP
XGPF
XUKG
_
Funkcja ta wywołuje funkcję CEEWOWNCVG, która — w przeciwieństwie do dotychczas
stosowanych algorytmów biblioteki standardowej — definiowana jest w nagłówki
PWOGTKE . Jak wskazuje nazwa tego nagłówka, udostępnia on narzędzia wykorzysty-
wane w obliczeniach numerycznych. Funkcja CEEWOWNCVG dodaje serię wartości z za-
kresu określonego wartościami dwóch pierwszych argumentów, zakładając początkową
sumę o wartości równej wartości trzeciego argumentu.
Typ wartości zwracanej zale ny jest od typu trzeciego argumentu; z tego względu nie
wolno w miejsce podać wartości — ta ostatnia jest bowiem wartością typu KPV,
co przy dodawaniu zaowocowałoby obcięciem części ułamkowych składników sumy.
Po uzyskaniu sumy wszystkich elementów kontenera dzielimy ją przez wartość XUKG
,
a więc przez liczbę elementów kontenera. Wynikiem dzielenia jest rzecz jasna średnia
arytmetyczna wartości kontenera; średnia ta zwracana jest do wywołującego.
Dysponując funkcją CXGTCIG mo emy wykorzystać ją w implementacji funkcji CXGTCIGA
ITCFG realizującej zmodyfikowaną metodę oceniania studentów według średnich ocen
z zadań domowych:
FQWDNG CXGTCIGAITCFG
EQPUV 5VWFGPVAKPHQ U
]
TGVWTP ITCFG
UOKFVGTO UHKPCN CXGTCIG
UJQOGYQTM
_
35. 42 Accelerated C++. Practical Programming by Example
Tutaj do obliczenia średniej ocen studenta z zadań domowych wywoływana jest funkcja
CXGTCIG. Wartość zwracana przez tę funkcję przekazywana jest bezpośrednio do funkcji
ITCFG (patrz §4.1/82) wyliczającej ostateczną ocenę studenta.
Dysponując tak rozbudowaną infrastrukturą, w prosty sposób utworzymy funkcję CXG
TCIGACPCN[UKU:
FQWDNG CXGTCIGACPCN[UKU
EQPUV XGEVQT5VWFGPVAKPHQ UVWFGPVU
]
XGEVQTFQWDNG ITCFGU
VTCPUHQTO
UVWFGPVUDGIKP
UVWFGPVUGPF
DCEMAKPUGTVGT
ITCFGU CXGTCIGAITCFG
TGVWTP OGFKCP
ITCFGU
_
Funkcję tę ró ni od funkcji OGFKCPACPCN[UKU (§6.2.2/155) jedynie nazwa i wywołanie
CXGTCIGAITCFG w miejsce ITCFGACWZ.
6.2.4. Mediana kompletu ocen zadań domowych
Ostatnia analiza, realizowana funkcją QRVKOKUVKEACPCN[UKUAUEJGOG, wyznacza ocenę stu-
denta w oparciu o optymistyczne zało enie, e oceny studentów z tych prac domowych,
których nie oddali, są identyczne z ocenami zadań, które zrealizowali. Przy takim zało-
eniu będziemy obliczać medianę ocen tylko tych prac domowych, które zostały przez
studenta oddane (przedło one do oceny). Medianę taką nazwiemy medianą optymi-
styczną. Nale y oczywiście uwzględnić ewentualność taką, e student nie oddał ad-
nej z prac domowych — w takim przypadku medianę jego ocen nale ałoby wyzna-
czyć jako :
mediana optymistyczna niezerowej liczby prac domowych ( dla zerowej liczby prac domowych)
FQWDNG QRVKOKUVKEAOGFKCP
EQPUV 5VWFGPVAKPHQ U
]
XGEVQTFQWDNG PQPGTQ
TGOQXGAEQR[
UJQOGYQTMDGIKP
UJQOGYQTMGPF
DCEMAKPUGTVGT
PQPGTQ
KH
PQPGTQGORV[
TGVWTP ITCFG
UOKFVGTO UHKPCN
GNUG
TGVWTP ITCFG
UOKFVGTO UHKPCN OGFKCP
PQPGTQ
_
Powy sza funkcja wyodrębnia z ocen studenta niezerową liczbę ocen prac domowych
i umieszcza je w nowym kontenerze typu XGEVQT o nazwie PQPGTQ. Mając niezerową
liczbę ocen z zadań domowych, wywołujemy dla nich i pozostałych ocen studenta wer-
sję funkcji ITCFG, zdefiniowaną w §4.1/82; wyliczana w miejscu przekazania argumentu
mediana uwzględnia jedynie prace oddane.
Jedyną nowością jest w powy szym kodzie sposób wypełniania kontenera PQPGTQ —
wykorzystywana jest do tego funkcja TGOQXGAEQR[. Aby zrozumieć jej działanie, warto
wiedzieć, e biblioteka standardowa udostępnia wersje „kopiujące” wielu typowych
36. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 43
algorytmów. Dla przykładu, algorytm TGOQXGAEQR[ realizuje zasadniczo to, co algorytm
TGOQXG (czyli usuwa elementy z kontenera), tyle e elementy nie są usuwane z kontene-
ra, a jedynie kopiowane do kontenera wskazywanym trzecim argumentem.
Konkretnie, funkcja wyszukuje i „usuwa” z kontenera wszystkie elementy o wartości
zgodnej z wartością zadaną jednym z argumentów wywołania. Wszystkie elementy se-
kwencji wejściowej, które nie zostały „usunięte”, kopiowane są do kontenera docelo-
wego. Niebawem dowiemy się, co znaczy w tym kontekście „usunięcie” elementu.
Funkcja TGOQXGAEQR[ przyjmuje trzy iteratory i wartość typu zale nego od typu konte-
nera. Tradycyjnie ju pierwsze dwa iteratory określają zakres elementów do przetwo-
rzenia. Trzeci iterator wskazuje miejsce w kontenerze docelowym. Implementacja al-
gorytmu TGOQXGAEQR[ zakłada, e kontener docelowy dysponuje miejscem wymaganym
do umieszczania w nim kolejnych kopii przetwarzanych elementów. W prezentowanym
wywołaniu o odpowiedni rozmiar kontenera docelowego troszczy się iterator DCEMA
KPUGTVGT.
Efektem działania algorytmu TGOQXGAEQR[ w postaci, w jakiej został tu wywołany jest
skopiowanie do kontenera PQPGTQ wszystkich niezerowych elementów kontenera
UJQOGYQTM. Po sprawdzeniu, czy kontener PQPGTQ nie jest przypadkiem pusty, nastę-
puje wyznaczenie z niego mediany i przekazanie jej do wywołania funkcji ITCFG, ob-
liczającej ostateczną ocenę studenta. Je eli kontener PQPGTQ jest pusty, do wywołania
ITCFG przekazywana jest — w miejsce mediany — wartość .
Potrzebujemy jeszcze funkcji realizującej samą analizę z wykorzystaniem funkcji
QRVKOKUVKEAOGFKCP. Jej implementacja będzie jednak ćwiczeniem dla Czytelnika.
6.3. Klasyfikacja studentów
— podejście drugie
W rozdziale 5. rozwiązywaliśmy zadanie kopiowania wpisów studentów, którzy nie
zaliczyli kursu, do osobnego kontenera typu XGEVQT; wpisy tych studentów były te usu-
wane z kontenera źródłowego. Okazało się, e najprostsze rozwiązanie problemu klasy-
fikacji (dzielenia na grupy) cechuje się niedopuszczalną degradacją wydajności w miarę
wzrostu rozmiaru danych wejściowych. Pokazaliśmy wtedy, jak problem małej wydaj-
ności wyeliminować przy u yciu kontenera typu NKUV; obiecaliśmy sobie równie , e do
problemu wrócimy przy okazji omawiania algorytmów.
Dzięki algorytmom biblioteki standardowej mo emy zaproponować dwa kolejne roz-
wiązania problemu klasyfikacji. Pierwsze z nich jest nieco wolniejsze, poniewa wyko-
rzystuje dwa algorytmy i dwukrotnie odwiedza ka dy z elementów. Przy zastosowaniu
bardziej specjalizowanego algorytmu to samo zadanie mo na rozwiązać w jednym prze-
biegu, przeglądając ka dy z elementów zbioru wejściowego jednokrotnie.
37. 44 Accelerated C++. Practical Programming by Example
6.3.1. Rozwiązanie dwuprzebiegowe
W pierwszym podejściu wykorzystamy strategię podobną do tej zakładanej w §6.2.4/158,
kiedy chcieliśmy wyodrębnić z kontenera te wpisy, które zawierały niezerową liczbę
ocen zadań domowych. Nie chcieliśmy wtedy w aden sposób modyfikować kontenera
JQOGYQTM, więc do skopiowania wpisów o niezerowej liczbie ocen prac domowych do
osobnego kontenera wykorzystaliśmy funkcję TGOQXGAEQR[. W naszym bie ącym zada-
niu musimy ju nie tylko skopiować, ale faktycznie usunąć z pierwotnego kontenera
elementy mające być umieszczone w kontenerze PQPGTQ:
XGEVQT5VWFGPVAKPHQ GZVTCEVAHCKNU
XGEVQT5VWFGPVAKPHQ UVWFGPVU
]
XGEVQT5VWFGPVAKPHQ HCKN
TGOQXGAEQR[AKH
UVWFGPVUDGIKP
UVWFGPVUGPF
DCEMAKPUGTVGT
HCKN RITCFG
UVWFGPVUGTCUG
TGOQXGAKH
UVWFGPVUDGIKP
UVWFGPVUGPF
HITCFG UVWFGPVUGPF
TGVWTP HCKN
_
Interfejs programu jest identyczny z tym prezentowanym w §5.3/118, implementującym
klasyfikację za pośrednictwem kontenerów typu XGEVQT i indeksów. Podobnie jak tam,
tu równie przekazany w wywołaniu kontener typu XGEVQT ma docelowo zawierać wpi-
sy tych studentów, którzy kurs zaliczyli, pozostałe wpisy mają zostać skopiowane do
kontenera HCKN (tak e typu XGEVQT). Na tym podobieństwa się kończą.
W oryginalnej wersji programu do przeglądania kolejnych elementów kontenera słu-
ył iterator KVGT; wskazywane przez niego elementy były kopiowane do kontenera HCKN,
a następnie, za pośrednictwem składowej GTCUG, usuwane z kontenera UVWFGPVU. Tym
razem kopiowanie wpisów studentów, którzy nie przekroczyli progu zaliczenia, odbywa
się za pośrednictwem funkcji TGOQXGAEQR[AKH. Funkcja ta działa podobnie jak TGOQXGA
EQR[ (§6.2.4/158) z tym, e w miejsce bezpośredniej wartości porównania tu wyko-
rzystywany jest predykat. Predykatem tym jest funkcja odwracająca działanie funkcji
HITCFG (§5.1/110):
DQQN RITCFG
EQPUV 5VWFGPVAKPHQ U
]
TGVWTP HITCFG
U
_
Przekazując do funkcji TGOQXGAEQR[AKH predykat, ądamy, aby funkcja „usunęła” ka dy
element, dla którego wywołanie predykatu zwróci wartość VTWG. „Usuwanie” oznacza tu
„niekopiowanie” — kopiowane są więc tylko te elementy, które nie spełniają predykatu
(predykat daje dla nich wartość HCNUG). Predykat RITCFG zaś jest skonstruowany tak,
e wywołanie TGOQXGAEQR[AKH kopiuje wpisy studentów, którzy oblali kurs.
Następna instrukcja jest cokolwiek zło ona. Po pierwsze mamy w niej wywołanie TGOQXGA
KH, „usuwające” elementy kontenera odpowiadające wpisom studentów z ocenami ne-
gatywnymi. Znowu jednak cudzysłów otaczający słowo „usuwające” sugeruje, e tak
naprawdę nie dochodzi do usunięcia elementów. Zamiast usuwać, funkcja TGOQXGAKH
kopiuje wszystkie te elementy, które nie spełniają predykatu (tu: wszystkie wpisy stu-
dentów, którzy kurs zaliczyli).
38. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 45
Wywołanie jest nieco karkołomne, poniewa zakresem źródłowym i docelowym funkcji
TGOQXGAKH jest ten sam zakres tego samego kontenera. Funkcja ta kopiuje na początek
kontenera elementy niespełniające predykatu. Załó my, przykładowo, e pierwotnie kon-
tener zawierał wpisy siedmiu studentów z następującymi ocenami (rysunek 6.3):
Rysunek 6.3.
Przykładowa zawartość
kontenera students
Funkcja TGOQXGAKH pozostawi dwa pierwsze wpisy nietknięte, poniewa znajdują się one
w odpowiednich miejscach (na początku kontenera). Następne dwa wpisy zostaną „usu-
nięte” w tym sensie, e zostaną potraktowane jako puste miejsca do wykorzystania przez
następne wpisy, które powinny pozostać w kontenerze. Piąty wpis, reprezentujący stu-
denta pozytywnie zaliczającego kurs, jest zatem kopiowany na pierwszą „wolną” pozycję
kontenera, a więc na pozycję pierwszego „usuniętego” elementu kontenera (rysunek 6.4):
Rysunek 6.4.
Zawartość kontenera
students po przetworzeniu
go funkcją remove_if
W takim układzie efektem wykonania funkcji TGOQXGAKH będzie przesunięcie czterech
wpisów studentów z ocenami pozytywnymi na początek kontenera — pozostałe wpisy
pozostaną nietknięte. Aby wiadomo było, które z elementów kontenera nale y wziąć pod
uwagę w dalszym przetwarzaniu, funkcja TGOQXGAKH zwraca iterator wskazujący element
następny po ostatnim elemencie, który nie został „usunięty” (rysunek 6.5):
Rysunek 6.5.
Zawartość kontenera
students a wartość
zwracana przez funkcję
remove_if
Po uło eniu wpisów sumiennych studentów na początku kontenera, nale y go obciąć,
usuwając fizycznie pozostałe wpisy. Obcięcie realizowane jest za pomocą niewyko-
rzystywanej dotąd wersji składowej GTCUG. Przyjmuje ona dwa iteratory i usuwa wszyst-
kie elementy z zakresu ograniczanego tymi iteratorami. Usuwając elementy pomiędzy
iteratorem zwracanym przez funkcję TGOQXGAKH i iteratorem UVWFGPVUGPF
, usuwamy
z kontenera wszystkie wpisy studentów, którzy oblali kurs (rysunek 6.6):
Rysunek 6.6.
Zawartość kontenera
students po wywołaniu
składowej erase
39. 46 Accelerated C++. Practical Programming by Example
6.3.2. Rozwiązanie jednoprzebiegowe
Przedstawione w poprzednim punkcie (§6.3.1/160) rozwiązanie działa znakomicie,
ale nie oznacza to, e nie da się zadania rozwiązać jeszcze efektywniej. Widać bowiem,
e kod prezentowany w §6.3.1/160 oblicza ocenę końcową ka dego studenta dwukrot-
nie — raz w funkcji TGOQXGAEQR[AKH, drugi raz w TGOQXGAKH.
Choć nie istnieje algorytm biblioteki standardowej, który załatwiłby nasz problem w jed-
nym wywołaniu, istnieje taki, którego wykorzystanie wią e się z zupełnie innym po-
dejściem do rozwiązania — algorytm ten przyjmuje na wejście sekwencję wartości
i zmienia jej uporządkowanie tak, aby wartości spełniające zadany predykat znajdo-
wały się przed wartościami niespełniającymi predykatu.
Algorytm ten dostępny jest w dwóch wersjach: RCTVKVKQP i UVCDNGARCTVKVKQP. Ró ni-
ca między nimi polega na tym, e RCTVKVKQP dopuszcza zmianę wzajemnego uporząd-
kowania wartości tej w ramach tej samej kategorii, podczas gdy UVCDNGARCTVKVKQP za-
chowuje wzajemne uporządkowanie wartości jednej kategorii. Gdyby, na przykład,
kontener wpisów studentów zostałby wcześniej posortowany alfabetycznie, to do po-
działu studentów na grupy nale ałoby u yć algorytmu UVCDNGARCTVKVKQP.
Obie wersje algorytmu zwracają iterator reprezentujący pierwszy element drugiej grupy
wartości. Dzięki nim mo emy dokonać podziału studentów na dwie grupy w sposób
następujący:
XGEVQT5VWFGPVAKPHQ GZVTCEVAHKNG
XGEVQT5VWFGPVAKPHQ UVWFGPVU
]
XGEVQT5VWFGVPVAKPHQ KVGTCVQT KVGT
UVCDNGARCTVKVKQP
UVWFGPVUDGIKP
UVWFGPVUGPF
RITCFG
XGEVQT5VWFGPVAKPHQ HCKN
KVGT UVWFGPVUGPF
UVWFGPVUGTCUG
KVGT UVWFGPVUGPF
TGVWTP HCKN
_
Aby zrozumieć działanie powy szego kodu, najlepiej posłu yć się naszym hipotetycz-
nym zbiorem danych (rysunek 6.7):
Rysunek 6.7.
Pierwotna zawartość
kontenera students
Po wywołaniu funkcji UVCDNGARCTVKVKQP otrzymujemy następujące uporządkowanie ele-
mentów kontenera (rysunek 6.8):
Rysunek 6.8.
Zawartość kontenera
students po wywołaniu
stable_partition
40. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 47
Kontener HCKN został skonstruowany jako kopia wpisów studentów sklasyfikowanych
jako oblewających kurs, czyli wpisów znajdujących się w zakresie =KVGT UVWFGPVU
GPF
. Elementy tego zakresu zostały następnie usunięte z kontenera UVWFGPVU.
Uruchamiając nasze rozwiązania wykorzystujące algorytmy biblioteki standardowej,
zauwa ymy, e wykonywane są one z wydajnością porównywalną z wydajnością na-
szego rozwiązania wykorzystującego kontenery typu NKUV. Zgodnie z oczekiwaniami,
wraz ze wzrostem liczby wpisów podawanych na wejście programu program wykorzy-
stujący kontener typu list wyraźnie zwiększa przewagę nad swoim odpowiednikiem wy-
korzystującym kontener XGEVQT. Tymczasem obie wersje algorytmiczne są tak efektywne,
e czas ich wykonania dla zbioru 75 000 wpisów jest w du ej mierze determinowany
wydajnością operacji wejścia. Aby porównać efekty działania obu tych wersji, trzeba
analizować osobno czas wykonania wyłącznie funkcji GZVTCEVAHCKNU. Pomiar czasu
potwierdził, e implementacja jednoprzebiegowa działa prawie dwukrotnie szybciej od
implementacji dwuprzebiegowej.
6.4. Algorytmy, kontenery, iteratory
Zrozumienie koncepcji kontenerów, iteratorów i algorytmów wymaga przyjęcia do wia-
domości podstawowego zało enia biblioteki standardowej wyra anego zdaniem:
Algorytmy operują na elementach kontenerów — nie na samych kontenerach.
Funkcje UQTV, TGOQXG czy RCTVKVKQP przesuwają elementy na nowe pozycje w ramach
ich kontenera macierzystego, nie zmieniają jednak właściwości samego kontenera. Przy-
kładowo, wywołanie TGOQXGAKH nie zmienia rozmiaru kontenera, którego elementami ope-
ruje — ogranicza się do kopiowania elementów wewnątrz kontenera.
To rozró nienie jest szczególnie istotne w zrozumieniu sposobu, w jaki algorytmy od-
wołują się do kontenerów określanych w tych algorytmach jako kontenery docelowe.
Przyjrzyjmy się bli ej sposobowi u ycia funkcji TGOQXGAKH z punktu §6.3.1/160. Było
to wywołanie o postaci:
TGOQXGAKH
UVWFGPVUDGIKP
UVWFGPVUGPF
HITCFG
Wywołanie to nie modyfikuje rozmiaru kontenera UVWFGPVU. Kopiuje tylko elementy,
dla których predykat HITCFG daje wartość HCNUG na początek kontenera, pozostawiając
resztę elementów nietkniętą. Je eli zachodzi potrzeba obcięcia kontenera typu XGEVQT
w celu pozbycia się „usuniętych” elementów, musimy to zrobić samodzielnie.
W naszym kodzie przykładowym zapisaliśmy:
UVWFGPVUGTCUG
TGOQXGAKH
UVWFGPVUDGIKP
UVWFGPVUGPF
HITCFG
UVWFGPVUGPF
Tutaj składowa GTCUG modyfikuje kontener, usuwając sekwencję określaną argumentami.
Wywołanie to skraca kontener UVWFGPVU tak, aby zawierał wyłącznie po ądane wpisy.
Zauwa my, e GTCUG, jako funkcja operująca nie tylko elementami kontenera, ale i nim
samym (zmieniając jego rozmiar), musi być metodą obiektu kontenera.
41. 48 Accelerated C++. Practical Programming by Example
Warto te uświadomić sobie kategorie interakcji pomiędzy iteratorami i algorytmami oraz
pomiędzy iteratorami i operacjami na kontenerach. Przekonaliśmy się ju (w §5.3/118
i §5.5.1/122) o tym, e operacje na kontenerach, jak GTCUG czy KPUGTV uniewa niają
iteratory elementu usuwanego. Co wa niejsze, w przypadku typów XGEVQT i UVTKPI ope-
ratory takie jak KPUGTV i GTCUG powodują równie uniewa nienie wszelkich iteratorów
odnoszących się do elementów znajdujących się za elementem wstawianym (usuwanym).
Fakt potencjalnego uniewa niania iteratorów w wyniku działania tych operacji zmusza
do ostro ności przy ewentualnym zachowywaniu wartości iteratorów w zmiennych pętli.
Równie wywołania funkcji takich jak RCTVKVKQP czy TGOQXGAKH, przemieszczających
elementy wewnątrz kontenera, mogą doprowadzić do podmiany elementu wskazywa-
nego przez iteratory kontenera — po wywołaniu jednej z takich funkcji nie mo na
polegać na poprzednich wartościach iteratorów i odwoływać się za ich pomocą do ele-
mentów kontenera.
6.5. Podsumowanie
Modyfikatory typów:
UVCVKE typ zmienna;
Dla definicji lokalnych modyfikator UVCVKE oznacza deklarację zmiennej
przechowywanej statycznie. Wartość takiej zmiennej jest podtrzymywana
pomiędzy wykonaniami zasięgu, w którym zmienna została zdefiniowana.
Zmienna taka będzie te inicjalizowana przed pierwszym jej u yciem. Kiedy
program opuszcza zasięg zmiennej, jej wartość jest zapamiętywana do czasu
ponownego wkroczenia programu w jej zasięg. W §13.4/317 zobaczymy,
e interpretacja modyfikatora UVCVKE zmienia się w zale ności od kontekstu.
Typy. Sposób wykorzystania wbudowanego typu XQKF jest ograniczone; jednym z takich
zastosowań jest określenie typu wartości zwracanej przez funkcję — funkcja zadekla-
rowana jako zwracająca wartość typu XQKF nie zwraca adnej wartości. Kod takiej funk-
cji nale y kończyć instrukcją TGVWTP. Mo na te pominąć instrukcję TGVWTP — funkcja
zostanie zakończona po dotarciu do końca jej ciała.
Adaptory iteratorów to funkcje zwracające iteratory. Najpopularniejszymi takimi funk-
cjami są adaptory generujące iteratory KPUGTVAKVGTCVQT, a więc iteratory, które dynamicz-
nie zwiększają rozmiar skojarzonego z nimi kontenera. Iteratorów takich mo na u ywać
jako określenia miejsca przeznaczenia w algorytmach kopiujących. Adaptory zdefinio-
wane są w nagłówku KVGTCVQT . Wśród nich znajdziemy:
DCEMAKPUGTVGT
E
Zwraca iterator kontenera E pozwalający na dołączanie elementów na koniec
kontenera E. Kontener musi obsługiwać metodę RWUJADCEM (obsługują ją, miedzy
innymi, kontenery typu NKUV, XGEVQT i ciągi typu UVTKPI).
42. Rozdział 6. ♦ Korzystanie z algorytmów biblioteki standardowej 49
HTQPVAKPUGTVGT
E
Zwraca iterator kontenera E pozwalający na wstawianie elementów na początek
kontenera E. Kontener musi obsługiwać metodę RWUJAHTQPV (obsługuje ją kontener
typu NKUV, ale nie XGEVQT i UVTKPI).
KPUGTVGT
E KV
Jak DCEMAKPUGTVGT, tyle e wstawia elementy przed iterator KV.
Algorytmy. O ile nie zaznaczono inaczej, algorytmy wykorzystywane w tekście rozdziału
definiowane były w nagłówku CNIQTKVJO . Znajdziemy tam następujące algorytmy:
CEEWOWNCVG
D G V
Tworzy zmienną lokalną i inicjalizuje ją kopią wartości V (typu zgodnego
z typem wartości V, co oznacza, e typ ten ma zasadnicze znaczenie dla sposobu
działania algorytmu CEEWOWNCVG) zwiększoną o wartości wszystkich elementów
z zakresu =D G. Algorytm zdefiniowany w nagłówku PWOGTKE .
HKPF
D G V
HKPFAKH
D G R
UGCTEJ
D G D G
Algorytmy wyszukujące określoną wartość w sekwencji elementów z zakresu
=D G. Algorytm HKPF wyszukuje wartość V; HKPFAKH poddaje ka dy z elementów
testowi prawdziwości predykatu R; UGCTEJ wyszukuje w sekwencji =D G
sekwencji =D G.
EQR[
D G F
TGOQXGAEQR[
D G F V
TGOQXGAEQR[AKH
D G F R
Algorytmy kopiujące sekwencję z zakresu =D G do miejsca docelowego
wskazywanego wartością F. Algorytm EQR[ kopiuje całość wskazanej sekwencji;
TGOQXGAEQR[ kopiuje wszystkie elementy ró ne od V; TGOQXGAEQR[AKH kopiuje
wszystkie elementy, dla których predykat R ma wartość HCNUG.
TGOQXGAKH
D G R
Zmienia uporządkowanie elementów w kontenerze w zakresie =D G, tak aby
elementy niespełniające zadanego predykatu R znalazły się na początku kontenera.
Zwraca iterator wskazujący element następny za ostatnim elementem
przeniesionym na początek kontenera.
TGOQXG
D G V
Podobna do TGOQXGAKH, z tym, e w miejsce predykatu stosuje porównanie
z wartością V.
VTCPUHQTO
D G H F
Wykonuje funkcję H dla ka dego elementu sekwencji =D G; wartość zwracaną
przez funkcję H umieszcza w F.
43. 50 Accelerated C++. Practical Programming by Example
RCTVKVKQP
D G R
UVCDNGARCTVKVKQP
D G R
Grupuje elementy w zakresie =D G w zale ności od predykatu R, tak aby
elementy spełniające predykat znajdowały się przed elementami, dla których
predykat daje wartość HCNUG. Zwraca iterator odnoszący się do pierwszego
elementu grupy niespełniającej predykatu, ewentualnie zwraca G, je eli wszystkie
elementy zakresu spełniały predykat. Wersja UVCDNGARCTVKVKQP zachowuje
wzajemne uporządkowanie elementów w ramach grup.
Ćwiczenia
Ćwiczenie 6.0.
Skompiluj, uruchom i sprawdź działanie programów prezentowanych w tym rozdziale.
Ćwiczenie 6.1.
Zmodyfikuj funkcję HTCOG i JECV z §5.8.1/130 i §5.8.3/132 tak, aby korzystały z iteratorów.
Ćwiczenie 6.2.
Napisz program testujący działanie funkcji HKPFAWTNU.
Ćwiczenie 6.3.
Jak działa poni szy fragment kodu?
XGEVQTKPV W
XGEVQTKPV X
EQR[
WDGIKP
WGPF
XDGIKP
Napisz program zawierający taki fragment, skompiluj go i uruchom.
Ćwiczenie 6.4.
Popraw program napisany w ramach poprzedniego ćwiczenia. Mo na to zrobić na, co
najmniej, dwa sposoby. Zaimplementuj oba i opisz wzajemne zalety i wady obu roz-
wiązań.
Ćwiczenie 6.5.
Napisz funkcję analityczną korzystającą z funkcji QRVKOKUVKEACPCN[UKU.
Ćwiczenie 6.6.
Zauwa , e funkcja z poprzedniego ćwiczenia oraz funkcje z §6.2.2/155 i §6.2.3/158
realizują to samo zadanie. Połącz je w jedną funkcję analityczną.
44. ♦ Korzystanie z algorytmów biblioteki standardowej 51
Ćwiczenie 6.7.
Fragment programu analitycznego z §6.2.1/152, odpowiedzialny za wczytanie i klasy-
fikację wpisów studentów na podstawie liczby wykonanych prac domowych jest po-
dobny do implementacji funkcji GZVTCEVAHCKNU. Napisz funkcję, która będzie rozwią-
zywała podobne podzadania.
Ćwiczenie 6.8.
Napisz pojedynczą funkcję, którą będzie mo na wykorzystać do klasyfikowania stu-
dentów w zale ności od wskazanego kryterium. Sprawdź poprawność działania tej funk-
cji, stosując ją w miejsce funkcji GZVTCEVAHCKNU; wykorzystaj nową funkcję w progra-
mie analizującym oceny studentów.
Ćwiczenie 6.9.
Wykorzystaj algorytm biblioteki standardowej do konkatenacji wszystkich elementów
kontenera typu XGEVQTUVTKPI .