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.
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.
Poznaj reguły projektowania i programowania obiektowego
* Elementy techniki obiektowej
* Metodyka tworzenia oprogramowania
* Implementacja mechanizmów obiektowych
Programowanie zorientowane obiektowo to technika, która w ciągu ostatnich lat zyskała niezwykłą popularność. Języki programowania obiektowego święcą triumfy, a metodologie projektowania oparte na analizie obiektowej stają się standardami przemysłowymi. Założenia analizy i programowania obiektowego są pozornie proste, jednakże bez ich właściwego zrozumienia nie można zaprojektować prawidłowo aplikacji implementowanej w obiektowym języku programowania. Technologia obiektowa zmieniła cały przemysł programistyczny, więc jej opanowanie jest niezbędnym elementem wiedzy każdego informatyka, który chce wykorzystywać w pracy nowoczesne metody i techniki.
Książka "Programowanie zorientowane obiektowo" to wyczerpujące omówienie wszystkich zagadnień związanych z projektowaniem i programowaniem obiektowym. Opisuje główne elementy techniki obiektowej oraz wiele spośród ich potencjalnych zastosowań. Dzięki książce poznasz również metodykę projektowania oprogramowania, dowiesz się, czym są wzorce projektowe, i nauczysz się, w jaki sposób zaimplementować lub zasymulować techniki obiektowe w różnych językach programowania.
* Podstawowe elementy projektowania obiektowego
* Wielokrotne wykorzystywanie kodu
* Analiza obiektowa
* Abstrakcyjne typy danych
* Klasy i obiekty
* Zarządzanie pamięcią
* Mechanizmy dziedziczenia
* Obsługa wyjątków
* Metodyka projektowania obiektowego
* Programowanie współbieżne
* Obiektowe bazy danych
* Zastosowanie technik obiektowych w różnych językach programowania
Wykorzystaj techniki obiektowe i popraw jakość tworzonego przez siebie oprogramowania.
O autorze:
Bertrand Meyer -- autor bestselerów, mający na swoim koncie już dziesięć książek, publikował zarówno pozycje teoretyczne, jak i poświęcone praktycznym zastosowaniom technologii obiektowej, a nawet zarządzaniu. [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.
Poznaj zasady stosowania wzorców projektowych
* Wykorzystaj notację UML
* Użyj wzorców projektowych w swojej pracy
* Napisz własne wzorce
Wzorce projektowe to opisy rozwiązań problemów programistycznych. Ich stosowanie podczas tworzenia oprogramowania pozwala uzyskać oszczędności czasowe, zwiększyć efektywność pracy i zoptymalizować działanie programów. Wiele wzorców już udokumentowano, a proces odkrywania nowych ciągle trwa. Programista dysponujący wiedzą o wzorcach projektowych może łatwo rozpoznawać problemy, dla których te wzorce znajdują zastosowanie, i natychmiast przystępować do opracowywania rozwiązań, bez konieczności wstrzymywania projektu, analizowania problemu i rozważania możliwych strategii.
Książka "Visual Basic .NET. Wzorce projektowe" to kompendium wiedzy o stosowaniu wzorców projektowych podczas programowania w języku Visual Basic. Zawiera szczegółowe omówienie najpopularniejszych wzorców, reguły ich wykorzystywania oraz przykłady kodu na nich opartego. Przy opisie każdego wzorca znajdziesz również argumenty przemawiające za jego stosowaniem lub unikaniem w konkretnych przypadkach. Nauczysz się tworzyć własne wzorce i dokumentować je w postaci diagramów UML.
* Podstawowe elementy języka UML
* Proces projektowania oprogramowania
* Miejsce wzorców projektowych w procesie tworzenia oprogramowania
* Wzorce podstawowe
* Wzorce konstrukcyjne
* Wzorce partycjonujące
* Wzorce strukturalne
* Wzorce behawioralne
* Wzorce przetwarzania współbieżnego
Naucz się rozwiązywać rzeczywiste problemy, wykorzystując wzorce projektowe.
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.
Teoria i praktyka prowadzenia projektów programistycznych
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do przekazania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia oprogramowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
"eXtreme programming" przedstawia nową metodologię i praktykę programowania w przystępny, a jednocześnie kompleksowy sposób. Autorzy omawiają podstawowe pojęcia programowania ekstremalnego: planowanie edycji, programowanie w parach, wczesne testowanie, "zręczne modelowanie" i refaktoryzację. Zostały one zaprezentowane na przykładzie konkretnego projektu, którego realizację omówiono w książce.
Kto powinien przeczytać tę książkę? Będzie ona niewątpliwie pożyteczną lekturą dla każdego, kto choć częściowo związał swe życie z tworzeniem oprogramowania -- programisty, menedżera czy koordynatora projektu. I nawet gdyby miało skończyć się tylko na czytaniu -- bez praktycznego zastosowania w najbliższym projekcie poznanych reguł, wiedza o programowaniu ekstremalnym okaże się bez wątpienia pożyteczna.
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do oddania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia programowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
Praktyczny podręcznik do nauki języka UML
* Jak zaprojektować dobry system?
* Jak poprawnie tworzyć i odczytywać modele?
* Jak w praktyce stosować UML i poprawić jakość projektowanych produktów?
W świecie informatyki dobry projekt to często więcej niż połowa sukcesu, a wraz ze wzrostem popularności obiektowych języków programowania UML -- ujednolicony język modelowania przeznaczony do reprezentacji elementów w analizie obiektowej i programowaniu obiektowym -- stał się podstawowym narzędziem do tworzenia modeli. Dlatego też trudno wyobrazić sobie dobrego informatyka, który nie potrafi przygotować poprawnego projektu w tym języku lub odczytać modelu utworzonego przez kogoś innego.
"UML. Inżynieria oprogramowania. Wydanie II" to przystępny podręcznik dla studentów i informatyków pragnących nie tylko poznać ujednolicony język modelowania, ale przede wszystkim nauczyć się korzystać z niego w kontekście inżynierii oprogramowania. Czytając go, dowiesz się, jak powinien wyglądać dobry system, poznasz składnię i funkcje języka UML, a przedstawione studia przypadku pozwolą Ci zobaczyć, jak używać go do projektowania praktycznych rozwiązań.
* Projektowanie systemów bazujących na komponentach
* Wprowadzenie do obiektowości
* Efektywny proces projektowania
* Opracowywanie modeli klas
* Przygotowywanie modeli przypadków użycia
* Tworzenie diagramów interakcji, stanów i aktywności
* Przygotowywanie diagramów struktury i wdrożeń
* Stosowanie komponentów i wzorców
* Dbanie o jakość procesu i produktu
* Praktyczne przykłady projektowania systemów
Jeśli chcesz tworzyć oprogramowanie najwyższej jakości,
zacznij od dobrego projektu.
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.
Poznaj reguły projektowania i programowania obiektowego
* Elementy techniki obiektowej
* Metodyka tworzenia oprogramowania
* Implementacja mechanizmów obiektowych
Programowanie zorientowane obiektowo to technika, która w ciągu ostatnich lat zyskała niezwykłą popularność. Języki programowania obiektowego święcą triumfy, a metodologie projektowania oparte na analizie obiektowej stają się standardami przemysłowymi. Założenia analizy i programowania obiektowego są pozornie proste, jednakże bez ich właściwego zrozumienia nie można zaprojektować prawidłowo aplikacji implementowanej w obiektowym języku programowania. Technologia obiektowa zmieniła cały przemysł programistyczny, więc jej opanowanie jest niezbędnym elementem wiedzy każdego informatyka, który chce wykorzystywać w pracy nowoczesne metody i techniki.
Książka "Programowanie zorientowane obiektowo" to wyczerpujące omówienie wszystkich zagadnień związanych z projektowaniem i programowaniem obiektowym. Opisuje główne elementy techniki obiektowej oraz wiele spośród ich potencjalnych zastosowań. Dzięki książce poznasz również metodykę projektowania oprogramowania, dowiesz się, czym są wzorce projektowe, i nauczysz się, w jaki sposób zaimplementować lub zasymulować techniki obiektowe w różnych językach programowania.
* Podstawowe elementy projektowania obiektowego
* Wielokrotne wykorzystywanie kodu
* Analiza obiektowa
* Abstrakcyjne typy danych
* Klasy i obiekty
* Zarządzanie pamięcią
* Mechanizmy dziedziczenia
* Obsługa wyjątków
* Metodyka projektowania obiektowego
* Programowanie współbieżne
* Obiektowe bazy danych
* Zastosowanie technik obiektowych w różnych językach programowania
Wykorzystaj techniki obiektowe i popraw jakość tworzonego przez siebie oprogramowania.
O autorze:
Bertrand Meyer -- autor bestselerów, mający na swoim koncie już dziesięć książek, publikował zarówno pozycje teoretyczne, jak i poświęcone praktycznym zastosowaniom technologii obiektowej, a nawet zarządzaniu. [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.
Poznaj zasady stosowania wzorców projektowych
* Wykorzystaj notację UML
* Użyj wzorców projektowych w swojej pracy
* Napisz własne wzorce
Wzorce projektowe to opisy rozwiązań problemów programistycznych. Ich stosowanie podczas tworzenia oprogramowania pozwala uzyskać oszczędności czasowe, zwiększyć efektywność pracy i zoptymalizować działanie programów. Wiele wzorców już udokumentowano, a proces odkrywania nowych ciągle trwa. Programista dysponujący wiedzą o wzorcach projektowych może łatwo rozpoznawać problemy, dla których te wzorce znajdują zastosowanie, i natychmiast przystępować do opracowywania rozwiązań, bez konieczności wstrzymywania projektu, analizowania problemu i rozważania możliwych strategii.
Książka "Visual Basic .NET. Wzorce projektowe" to kompendium wiedzy o stosowaniu wzorców projektowych podczas programowania w języku Visual Basic. Zawiera szczegółowe omówienie najpopularniejszych wzorców, reguły ich wykorzystywania oraz przykłady kodu na nich opartego. Przy opisie każdego wzorca znajdziesz również argumenty przemawiające za jego stosowaniem lub unikaniem w konkretnych przypadkach. Nauczysz się tworzyć własne wzorce i dokumentować je w postaci diagramów UML.
* Podstawowe elementy języka UML
* Proces projektowania oprogramowania
* Miejsce wzorców projektowych w procesie tworzenia oprogramowania
* Wzorce podstawowe
* Wzorce konstrukcyjne
* Wzorce partycjonujące
* Wzorce strukturalne
* Wzorce behawioralne
* Wzorce przetwarzania współbieżnego
Naucz się rozwiązywać rzeczywiste problemy, wykorzystując wzorce projektowe.
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.
Teoria i praktyka prowadzenia projektów programistycznych
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do przekazania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia oprogramowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
"eXtreme programming" przedstawia nową metodologię i praktykę programowania w przystępny, a jednocześnie kompleksowy sposób. Autorzy omawiają podstawowe pojęcia programowania ekstremalnego: planowanie edycji, programowanie w parach, wczesne testowanie, "zręczne modelowanie" i refaktoryzację. Zostały one zaprezentowane na przykładzie konkretnego projektu, którego realizację omówiono w książce.
Kto powinien przeczytać tę książkę? Będzie ona niewątpliwie pożyteczną lekturą dla każdego, kto choć częściowo związał swe życie z tworzeniem oprogramowania -- programisty, menedżera czy koordynatora projektu. I nawet gdyby miało skończyć się tylko na czytaniu -- bez praktycznego zastosowania w najbliższym projekcie poznanych reguł, wiedza o programowaniu ekstremalnym okaże się bez wątpienia pożyteczna.
* Naucz się zasad programowania ekstremalnego i zastosuj je w praktyce
* Od konceptualizacji do oddania działającego systemu -- poznaj najlepsze sposoby pracy na każdym etapie tworzenia programowania
* Poznaj znaczenie wszystkich uczestników procesu tworzenia oprogramowania: programistów, menedżerów i klientów
* Dowiedz się, jak rozwiązać najczęstsze problemy powstające przy wdrażaniu metodologii programowania ekstemalnego
Praktyczny podręcznik do nauki języka UML
* Jak zaprojektować dobry system?
* Jak poprawnie tworzyć i odczytywać modele?
* Jak w praktyce stosować UML i poprawić jakość projektowanych produktów?
W świecie informatyki dobry projekt to często więcej niż połowa sukcesu, a wraz ze wzrostem popularności obiektowych języków programowania UML -- ujednolicony język modelowania przeznaczony do reprezentacji elementów w analizie obiektowej i programowaniu obiektowym -- stał się podstawowym narzędziem do tworzenia modeli. Dlatego też trudno wyobrazić sobie dobrego informatyka, który nie potrafi przygotować poprawnego projektu w tym języku lub odczytać modelu utworzonego przez kogoś innego.
"UML. Inżynieria oprogramowania. Wydanie II" to przystępny podręcznik dla studentów i informatyków pragnących nie tylko poznać ujednolicony język modelowania, ale przede wszystkim nauczyć się korzystać z niego w kontekście inżynierii oprogramowania. Czytając go, dowiesz się, jak powinien wyglądać dobry system, poznasz składnię i funkcje języka UML, a przedstawione studia przypadku pozwolą Ci zobaczyć, jak używać go do projektowania praktycznych rozwiązań.
* Projektowanie systemów bazujących na komponentach
* Wprowadzenie do obiektowości
* Efektywny proces projektowania
* Opracowywanie modeli klas
* Przygotowywanie modeli przypadków użycia
* Tworzenie diagramów interakcji, stanów i aktywności
* Przygotowywanie diagramów struktury i wdrożeń
* Stosowanie komponentów i wzorców
* Dbanie o jakość procesu i produktu
* Praktyczne przykłady projektowania systemów
Jeśli chcesz tworzyć oprogramowanie najwyższej jakości,
zacznij od dobrego projektu.
Większość osób podłączając komputer do Internetu nie uświadamia sobie wszystkich konsekwencji tego faktu. Zyskując dostęp do milionów stron WWW, na których znajdują się informacje na każdy temat, udostępniają hakerom możliwość dotarcia do informacji zapisanych na twardych dyskach swoich komputerów.
Nie warto zastanawiać się, dlaczego ktoś chciałby włamać się do naszego komputera i odczytać (lub co gorsza zniszczyć) nasze dane. Takie włamania nie są bynajmniej rzadkością i nie możemy mieć pewności, że akurat nam nie przydarzy się nic złego. Warto więc zapoznać się z książką "ABC obrony komputera przed atakami hakera", która nawet początkującym dostarczy wielu cennych wskazówek, pozwalających korzystać z dobrodziejstw Internetu bez strachu przed intruzami.
Dowiesz się między innymi:
* Kim są hakerzy, jakie są ich motywy, cele i metody działania
* Jakiego oprogramowania używają hakerzy i w jaki sposób może być dla Ciebie szkodliwe, niebezpieczne
* Jak załatać najważniejsze dziury w zabezpieczeniach systemu Windows
* Jak, używając systemu Linux, zbudować tani i skuteczny firewall
* Z jakich metod szyfrowania możesz skorzystać w celu zabezpieczenia swoich danych
* Jakie zagrożenia niesie za sobą IRC
* Jak zabezpieczyć całą sieć komputerową
test
Active Directory jest złożoną bazą danych i nieodłącznym elementem architektury sieciowej Windows 2000. Pozwala organizacjom skutecznie udostępniać i zarządzać informacjami dotyczącymi zasobów sieciowych i użytkowników. Active Directory gra rolę węzła integrującego ze sobą systemy i pozwalającego na konsolidację zarządzania nimi. W niniejszej książce zawarliśmy doświadczenia nabyte przy implementacji AD:
* Planowanie instalacji AD w terminie i w ramach zaplanowanego budżetu.
* Interakcja AD z innymi usługami sieciowymi: DNS, DHCP, RIS, RRAS i WINS.
* Korzystanie z obiektów zasad grup, praw użytkownika, FSMO i mechanizmów delegowania kontroli.
* Unikanie pułapek w strategiach migracji korzystających z narzędzi migracji Active Directory.
* Administracyjne i polityczne aspekty migracji do AD
W książce Projektowanie struktur Active Directory ponadto znajdziemy:
* Przejrzysty opis AD.
* Wyjaśnienie, dlaczego udane wdrożenie Active Directory wymaga starannego zaplanowania.
* Kilka przykladów pomyślnych implementacji AD.
* Sposoby tworzenia solidnych podstaw dla planowania i implementacji Active Directory.
BeStCAD to znana wielu konstruktorom aplikacja, będąca nakładką na program AutoCAD, przystosowująca go do tworzenia dokumentacji technicznej wszelkich konstrukcji budowlanych i inżynierskich. Książka, autorstwa twórców BeStCAD-a, opisuje funkcje, rozszerzające AutoCAD-a o:
* biblioteki profili PN i DIN, oznaczenia spoin oraz łączniki,
* generator typowych połączeń doczołowych,
* biblioteka typowych gięć prętów wg PN-ISO 4066,
* narzędzia do rozmieszczania prętów,
* automatyczne opisy, numeracja pozycji oraz generatory wykazów materiałów
BeStCAD to wyrafinowana aplikacja, stworzona za pomocą nowoczesnych technik programistycznych. Odmieni ona Twojego AutoCAD-a i oszczędzi Twój czas przy wykonywaniu rysunków konstrukcyjnych. Jeśli przestał Ci już wystarczać sam AutoCAD, to BeStCAD sprawi, że będzie on jeszcze lepszym narzędziem w Twej pracy konstruktora.
Visual Basic przeszedł generalny remont. Istnieje wiele powodów, dla których programiści Visual Basica 6 powinni przesiąść się na nowy Visual Basic .NET. Należy do nich zaliczyć chociażby formularze Web, możliwość tworzenia aplikacji i usług WWW, strukturalną obsługę wyjątków, prawdziwe programowanie zorientowane obiektowo czy też wielowątkowość.
"Visual Basic .NET. Księga eksperta" zawiera dokładne omówienie nowego języka Visual Basic .NET, zunifikowanego środowiska programowania Visual Studio IDE, programowania formularzy WWW, ADO.NET, usługi WWW, GDI+ i wiele innych.
Visual Studio .NET jest środowiskiem bardzo rozbudowanym i potężnym. Aby w pełni je wykorzystać, poznasz także sposoby tworzenia makr oraz znajdziesz omówienie modelu automatyzacji służącego do indywidualizacji zadań i interfejsu IDE w Visual Studio. Książka zawiera wiele przykładów wziętych z praktyki programistycznej.
Książka omawia:
* Środowisko programistyczne Visual Studio, korzystanie z SourceSafe
* Język Visual Basic .NET, programowanie zorientowane obiektowo w VB .NET
* Rozszerzanie środowiska programistycznego za pomocą makr
* Zaawansowane programowanie w VB .NET: refleksje, przeciążanie, programowane oparte na zdarzeniach, polimorfizm, definiowanie atrybutów
* Tworzenie interfejsu użytkownika (aplikacje konsolowe, aplikacje z interfejsem Windows)
* Pisanie aplikacji wielowątkowych
* Uruchamianie usług WWW (Web Services)
"Visual Basic .NET. Księga eksperta" jest doskonałym podręcznikiem dla wszystkich osób, dla których osiągnięcie wysokiej sprawności w posługiwaniu się językiem Visual Basic stanowi podstawę kariery programistycznej. Niezależnie, od tego, czy używałeś poprzedniej wersji tego języka, czy też nie: jeśli chcesz stać się ekspertem Visual Basica, trzymasz w ręku odpowiednią książkę.
Być może Perl jest najlepszym językiem służącym do pisania skryptów CGI, ale skrypty CGI nie są najlepszym sposobem tworzenia aplikacji internetowych. Potrzeba większej wydajności, lepszej integracji z serwerem WWW i pełniejszego wykorzystania jego możliwości doprowadziła do stworzenia modułu mod_perl. Pozwala on na pisanie modułów serwera Apache w Perlu i na pełny dostęp do funkcji API Apache"a z poziomu Perla.
mod_perl jest bardzo rozbudowany, dzięki czemu daje programiście ogromne możliwości. Książka "mod_perl. Podręcznik programisty" będzie nieocenioną pomocą w poznawaniu jego potencjału. Nauczysz się z niej podstaw mod_perla, a gdy już je opanujesz, poznasz tajniki pisania dużych i skomplikowanych aplikacji.
W książce opisano między innymi:
* Instalację i konfigurację mod_perla
* Komunikację mod_perla z Apache
* Działania na adresach URL
* Obsługę plików w środowisku mod_perla
* Tworzenie własnych aplikacji w oparciu o mod_perla
* Osiągania maksymalnej wydajności aplikacji używających mod_perla
* Dodatkowe moduły współpracujące z mod_perlem
Po przeczytaniu tej książki uzyskasz nową perspektywę na programowanie aplikacji sieciowych w Perlu. Programiści Slashdot.org, Internet Movie Database i Wired wybrali mod_perl jako platformę do tworzenia aplikacji. Może i Ty powinieneś pójść w ich ślady?
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
Język XSLT jest jedną z najważniejszych technologii związanych z XML. Za pomocą XSLT możemy przekształcić dokumenty XML, możemy także wygenerować plik HTML lub nawet zwykły plik tekstowy. Specyfikacja tego języka opracowana przez konsorcjum W3C nie jest łatwa w lekturze. Nawet jeśli programowałeś wcześniej w języku zorientowanym obiektowo lub języku strukturalnym, zrozumienie zasady działania XSLT może nastręczać pewne trudności. XSLT został bowiem oparty o zupełnie inny paradygmat, który poznasz w czasie lektury tej książki.
Książka "XSLT dla każdego" w przystępny sposób pomoże zrozumieć i opanować język XSLT. Od czytelników wymaga się jedynie podstawowej znajomości XML i technologii z XML związanych. Podczas pracy z XSLT będziemy jednocześnie pogłębiali swoją znajomość XML. Nauczymy się przekształcać dokumenty XML na kod HTML, dzięki czemu można je przeglądać w przeglądarce, nauczymy się też przetwarzać jedną postać XML na inną.
Przedstawiono:
* Zalety, wady i obszary zastosowania XSLT
* Narzędzia ułatwiające tworzenie i debugowanie plików XSLT, procesory XSLT: MSXML, Saxon, Xalan
* Wybieranie fragmentów dokumentu XML za pomocą XPath
* Użycie reguł, wstawianie tekstu i elementów
* Przetwarzanie warunkowe i iteracyjne, zastosowanie rekurencji
* Tworzenie dokumentów HTML
* Użycie zmiennych i parametrów
* Operacje na łańcuchach, formatowanie danych, sortowanie i numerowanie
* Tworzenie arkuszy złożonych z wielu plików
* Zagadnienia związane z przestrzeniami nazw
* Metodologię projektowania aplikacji opartych na XML i XSLT
Książka "XSLT dla każdego" jest przeznaczona dla osób uczących się XSLT, ale nie tylko dla nich. Przydatna będzie też dla osób znających już podstawy XSLT, gdyż wiele zagadnień omawiamy bardzo szczegółowo. To kompletny przewodnik po tym języku programowania, od podstaw po zagadnienia zaawansowane.
Sieci oparte na protokole TCP/IP podbiły świat. Po ogromnym sukcesie Internetu na dobre zadomowiły się w firmach (intranet), czy w amatorskich sieciach komputerowych wypierając w znacznym stopniu inne rozwiązania. Stąd ogromne zapotrzebowanie na administratorów sieci działających w oparciu o TCP/IP.
"TCP/IP dla każdego" przekaże Ci całą niezbędną wiedzę do administrowania siecią TCP/IP. Ujmuje zarówno zagadnienia podstawowe opisując dokładnie sam protokół, jak i kwestie bardziej skomplikowane, w tym konfigurowanie systemu DNS czy zarządzanie SNMP. Uwzględnione zostały najnowsze, normalizowane dopiero w ostatnich latach technologie, takie jak:
Internet Protocol Security (IPSec)
IPv6
Voice Over IP
Bezprzewodowe sieci lokalne
Uwierzytelnianie RADIUS
Infrastruktura klucza publicznego (PKI)
Książka omawia zarówno teoretyczne podstawy funkcjonowania sieci opartych na TCP/IP, jak i praktyczne sposoby konfigurowania protokołów w różnorodnych systemach operacyjnych stosowanych we współczesnych sieciach. Zgodnie z tytułem, jest to publikacja kierowana do szerokiego grona Czytelników: początkujących i zaawansowanych, dla administratora-praktyka i dla studenta. Temu ostatniemu z pewnością pomogą sprawdzające pytania, które podsumowują każdy rozdział książki.
Dzięki poradom i wskazówkom zawartym w tej książce Czytelnik zmieni się ze zwykłego użytkownika komputera PC w administratora sieciowego. Chociaż książka przeznaczona jest dla początkujących, także profesjonaliści zajmujący się sieciami i telekomunikacją znajdą tu wiele przydatnych wiadomości. "ABC sieci komputerowych" to kompendium wiedzy zarówno o zagadnieniach dotyczących infrastruktury sieciowej jak i kwestii związanych z oprogramowaniem używanym w sieciach.
Lektura tej książki sprawi, że:
* Nauczysz się odróżniać typy sieci i wybierzesz technologię sieciową najlepiej odpowiadającą Twoim potrzebom
* Zapoznasz się z różnymi składnikami sprzętu komputerowego wykorzystywanymi do tworzenia sieci
* Poznasz architekturę sieci komputerowych
* Zapoznasz się z teorią i praktyką dotyczącą komunikacji w sieci
* Poznasz protokoły internetowe (FTP, POP3, SMTP, IMAP, TCP/IP)
* Nauczysz się projektować i konfigurować sieci oraz dowiesz się, w jaki sposób udostępniać w sieci zasoby, takie jak drukarki czy dyski
* Będziesz mógł uruchamiać serwery WWW
* Zapoznasz się z metodami ochrony danych, ochrony sieci przed atakami oraz ochrony systemu przed wirusami
* Będziesz znał praktyczne sposoby rozwiązywania problemów związanych z sieciami
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.
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.
Kompendium wiedzy dla każdego programisty, projektanta i kierownika projektu
* Nowoczesne metodyki wytwarzania oprogramowania
* Narzędzia do modelowania aplikacji i automatycznego generowania kodu
* Koncepcja architektury sterowanej modelami
* Sposoby zapewnienia jakości aplikacji
Tworzenie aplikacji korporacyjnych to wyścig z czasem. Organizacje zmieniają się podobnie jak otoczenie biznesowe, w którym działają. Zbyt długi okres przygotowania aplikacji może sprawić, że po wdrożeniu okaże się ona bezużyteczna. Z drugiej jednak strony, zbyt duży pośpiech przy tworzeniu aplikacji powoduje, że pomija się fazę modelowania i testowania, pisząc kod źródłowy bez jakiejkolwiek koncepcji i planu. Efektem takiego pośpiechu są aplikacje niedostosowane do wymagań użytkowników i pracujące niestabilnie. Sposobem na stworzenie odpowiedniego systemu informatycznego dla korporacji jest wykorzystywanie odpowiednich metodyk projektowych i nowoczesnych narzędzi ułatwiających zarówno pisanie, jak i testowanie aplikacji.
Książka "J2EE. Podstawy programowania aplikacji korporacyjnych" przedstawia najlepsze praktyki projektowe stosowane przy tworzeniu systemów informatycznych z wykorzystaniem platformy J2EE. Opisano w niej kolejne etapy projektu oraz narzędzia i metodyki, dzięki którym przeprowadzenie każdego z nich będzie szybsze i efektywniejsze. Czytając ją, poznasz metodyki RUP i XP, typy architektur systemów oraz sposoby modelowania aplikacji i narzędzia do automatycznego generowania szkieletu kodu źródłowego. Dowiesz się, jak optymalnie skonfigurować środowiska programistyczne i jak testować kolejne moduły aplikacji. Nauczysz się korzystać z nowoczesnych metodyk i narzędzi.
* Podstawowe wiadomości o błyskawicznym wytwarzaniu aplikacji (RAD)
* Metodyki projektowe Rational Unified Process (RUP) oraz Extreme Programming (XP)
* Wielowarstwowe architektury systemów
* Modelowanie systemów za pomocą języka UML
* Automatyczne generowanie kodu
* Stosowanie narzędzi XDoclet i Hibernate
* Komunikacja z bazami danych
* Zasady programowania aspektowego
* Testowanie aplikacji
Wiadomości zawarte w tej książce sprawią, że będziesz w stanie szybciej projektować i tworzyć aplikacje korporacyjne.
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
Przygotuj projekt systemu informatycznego,
który naprawdę spełni oczekiwania użytkowników
* Wybierz technologię, platformę sprzętową i model licencjonowania
* Zadbaj o funkcjonalność i łatwość rozbudowy systemu
* Zabezpiecz system przed piractwem, kradzieżą i utratą danych
Termin "architektura oprogramowania" kojarzy się zwykle z doborem języka programowania, wzajemnymi zależnościami między komponentami powstającego systemu informatycznego, wyborem platformy bazodanowej i zaplanowaniem innych elementów związanych wyłącznie z zagadnieniami technicznymi. Tymczasem w opisie architektury systemu nie wolno pomijać także innych kwestii: modelu licencjonowania, sposobu wdrażania i konserwacji systemu, a przede wszystkim jego użyteczności. Te pozornie niezwiązane z projektem elementy mogą mieć duży wpływ na powodzenie przedsięwzięcia, jakim jest stworzenie i sprzedaż oprogramowania. Odpowiednio przygotowany projekt systemu informatycznego powinien więc obejmować zarówno zagadnienia techniczne, jak i ekonomiczne.
Książka "Więcej niż architektura oprogramowania" to poradnik, dzięki któremu stworzenie odpowiedniej relacji między technologią a biznesem jest łatwiejsze, niż mogłoby się wydawać. Może się przydać zarówno menedżerowi, jak i programiście. Autor książki, doświadczony kierownik projektów i twórca oprogramowania, przedstawia związki między zagadnieniami technicznymi a innymi aspektami. Znajdziesz w niej opisy dobrych i skutecznych rozwiązań oraz zaczerpnięte z rynku przykłady planowania produkcji oprogramowania.
* Znaczenie architektury oprogramowania
* Zarządzanie oprogramowaniem jako produktem
* Modele licencjonowania
* Wykorzystywanie obcych technologii w projekcie
* Wdrażanie systemu
* Obsługa techniczna
* Dobór marki
* Funkcjonalność i łatwość obsługi
* Zabezpieczanie aplikacji
Sprawy z pozoru mało ważne często powodują największe problemy. Nie ignoruj ich. Pracuj nad projektem kompleksowo.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Sprzedaj swój program. Droga do udanych projektów programistycznychWydawnictwo Helion
Stwórz niezawodne oprogramowaniespełniające oczekiwania użytkowników
* Wykorzystuj odpowiednie narzędzia projektowe.
* Wdrażaj nowoczesne metodologie.
* Szybko rozwiązuj problemy.
Dyskusje nad wadami i zaletami przeróżnych metodologii tworzenia oprogramowania, mające na celu wyłonienie najlepszej z nich, zwykle do niczego nie prowadzą. Zwolennicy poszczególnych metodologii, takich jak Rational Unified Process, programowanie ekstremalne i inne, starają się udowodnić, że to ich stanowisko jest poprawnym sposobem realizacji projektów informatycznych. Tymczasem nie istnieje "jedyne słuszne" i uniwersalne podejście, które sprawdza się we wszystkich okolicznościach. Wybór właściwej metodologii w ogromnej mierze zależy od typu projektu i wielkości zespołu pracującego nad nim. Należy kierować się nastawieniem czysto pragmatycznym, czyli wybrać taką metodologię, która będzie najbardziej korzystna dla określonego projektu. Niewłaściwy wybór może skończyć się porażką.
Książka "Sprzedaj swój program. Droga do udanych projektów programistycznych" to zbiór wskazówek przedstawiających narzędzia i techniki, dzięki którym każdy projekt programistyczny zakończy się sukcesem. Czytając ją, nauczysz się korzystać z nowoczesnych instrumentów wykorzystywanych do projektowania oprogramowania, kontroli wersji kodu źródłowego i śledzenia procesu usuwania błędów. Dowiesz się, w jaki sposób zorganizować pracę zespołu projektowego i wdrażać metodologię wytwarzania oprogramowania. Porady, które znajdziesz w tej książce, pomogą Ci rozwiązać problemy pojawiające się podczas realizacji projektów programistycznych. Poznasz nowoczesne metody oraz dowiesz się, kiedy i jak z nich korzystać.
* Planowanie infrastruktury
* Dobór narzędzi projektowych
* Automatyzacja zadań
* Tworzenie listy zadań
* Rola kierownika technicznego
* Metodologia pocisku smugowego
* Rozwiązywanie problemów
Wskazówki zawarte w tej książce sprawią, że każdy prowadzony przez Ciebie projekt zakończy się w terminie i zmieści w wyznaczonym budżecie.
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
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...]
Poznaj nowoczesną metodykę wytwarzania oprogramowania w C#
* Jak stosować w praktyce zasady zwinnego wytwarzania oprogramowania?
* W jaki sposób wykorzystywać w projekcie diagramy UML?
* Jak korzystać z wzorców projektowych?
W związku ze stale rosnącymi oczekiwaniami użytkowników oprogramowania produkcja systemów informatycznych wymaga dziś korzystania z usystematyzowanych metod zarządzania. Projekt informatyczny, przy którym nie używa się sensownej metodologii wytwarzania, jest skazany na porażkę -- przekroczenie terminu, budżetu i niespełnienie wymagań funkcjonalnych. Kierowanie projektem zgodnie z określonymi zasadami również nie gwarantuje sukcesu, lecz znacznie ułatwia jego osiągnięcie. Na początku roku 2001 grupa ekspertów zawiązała zespół o nazwie Agile Alliance. Efektem prac tego zespołu jest metodologia zwinnego wytwarzania oprogramowania -- Agile.
Książka "Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#" to podręcznik metodologii Agile przeznaczony dla twórców oprogramowania korzystających z technologii .NET. Dzięki niemu poznasz podstawowe założenia i postulaty twórców Agile i nauczysz się stosować je w praktyce. Dowiesz się, jak szacować terminy i koszty, dzielić proces wytwarzania na iteracje i testować produkt. Zdobędziesz wiedzę na temat refaktoryzacji, diagramów UML, testów jednostkowych i wzorców projektowych. Przeczytasz także o publikowaniu kolejnych wersji oprogramowania.
* Techniki programowania ekstremalnego
* Planowanie projektu
* Testowanie i refaktoryzacja
* Zasady zwinnego programowania
* Modelowanie oprogramowania za pomocą diagramów UML
* Stosowanie wzorców projektowych
* Projektowanie pakietów i komponentów
Przekonaj się, ile czasu i pracy zaoszczędzisz,
stosując w projektach metodologię Agile.
>> Poznaj warunki zakupu
Chyba w każdej firmie można dziś znaleźć komputer. Dzięki wiadomościom z tej publikacji wykorzystasz wszystkie możliwości, jakie otwiera przed nowoczesną firmą zastosowanie technologii informatycznych. Przekonasz się, o ile sprawniej może przebiegać Twoja praca.
* Usprawnij działanie firmy, stosując nowoczesne narzędzia
* Zabezpiecz dane, wykonaj kopie bezpieczeństwa i uchroń się przed wirusami
* Przygotuj profesjonalną korespondecję i dokumenty finansowe, wykorzystując pakiet MS Office
* Zaprezentuj ofertę firmy dzięki możliwościom aplikacji PowerPoint
* Wykorzystaj możliwości sieci lokalnej i internetu
Technologie informatyczne wspomagają niemal każdą dziedzinę życia. Najczęściej jednak komputery spotkać można w przedsiębiorstwach, gdzie wykorzystywane są do różnych zadań. Pełnią rolę narzędzi do projektowania, przeprowadzania obliczeń, składowania i przetwarzania danych, wyszukiwania informacji czy też przygotowywania materiałów reklamowych firmy. Czasochłonne zadania, które kiedyś zabierały kilka dni pracy, obecnie wykonuje się w ciągu kilku godzin. Umiejętność obsługi komputera jest dziś jedną z najistotniejszych kwalifikacji pracownika nowoczesnego przedsiębiorstwa.
"Komputer PC w nowoczesnej firmie" to podręczny poradnik przeznaczony dla wszystkich, którzy w pracy korzystają z komputera, przedstawiający możliwości najpopularniejszych aplikacji. Każda z części książki opisuje inną dziedzinę zastosowań komputera w firmie. Znajdziesz tu najbardziej aktualne informacje o wszystkich zagadnieniach, z jakimi możesz zetknąć się podczas użytkowania komputera w pracy: od najnowszych metod zabezpieczania danych i ochrony przed wirusami, poprzez edycję dokumentów tekstowych i arkuszy kalkulacyjnych w najpopularniejszych aplikacjach biurowych, aż do sposobów korzystania z sieci biurowej oraz internetu. Dzięki temu poradnikowi będziesz zawsze na bieżąco z najnowszymi wersjami aplikacji biurowych i osiągnięciami technologii informatycznych.
* Ochrona danych
* Sposoby walki z wirusami i spamem
* Projektowanie elementów graficznych
* Edycja i formatowanie tekstów
* Przygotowywanie korespondencji seryjnej
* Zestawienia i raporty
* Profesjonalna prezentacja
* Baza danych
* Sieci komputerowe i internet
Na wydawanych kwartalnie płytach CD znajdziesz materiały pomocnicze, ciekawe aplikacje i przykłady zastosowań technik opisanych w niniejszej publikacji.
Wspomaganie planowania zadań i zarządzania przedsiębiorstwem
Microsoft Project 2002 to kolejna już wersja popularnego programu do zarządzania przedsięwzięciami. Jeżeli jesteś osobą odpowiedzialną za utworzenie harmonogramu przedsięwzięcia, oszacowanie jego kosztów, zarządzanie zasobami ludzkimi i sprzętowymi lub jeśli chcesz porównywać plan z jego wykonaniem - ten program ułatwi Ci pracę.
Podręcznik łączy teorię z praktyką. Opisano w nim teoretyczne podstawy poszczególnych narzędzi dostępnych w MS Project 2002. Część praktyczna następująca po wyjaśnieniach teoretycznych umożliwia wykorzystanie nabytych wiadomości. Ma ona formę ćwiczeń. Dzięki ich wykonaniu nabędziesz umiejętności, które później z całą pewnością będą przydatne w pracy.
Omówiono:
* Interfejs programu MS Project i sposoby wyświetlania danych za pomocą widoków
* Zarządzanie zadaniami i zasobami
* Przydzielanie zasobów do zadań
* Kalendarze - ustalanie czasu pracy i dni wolnych
* Tworzenie budżetu projektu i analiza przepływów gotówkowych
* Rozwiązywanie problemów z nadmiernym obciążeniem zasobów i optymalizacja projektu
* Analizy odchyleń terminów, kosztów oraz pracy
* Tworzenie raportów
* Wymianę informacji pomiędzy MS Project i innymi aplikacjami
* Wspomaganie planowania zadań i zarządzania przedsięwzięciami
Książka ta zawiera wiele cennych informacji zarówno dla tych użytkowników rozpoczynających pracę z aplikacją MS Project, jak i dla tych, którzy mają doświadczenie z tą i poprzednimi wersjami programu. W przypadku, gdyby niektóre ćwiczenia sprawiały jednak problem, na płycie CD zawarte są filmy instruktażowe zapisane w formacie wmv. Zawierają one zapis wideo niektórych czynności opisanych w treści ćwiczeń.
* Twórz nowe projekty, zarządzaj zadaniami i przydzielaj zasoby
* Zautomatyzuj opracowywanie budżetu swoich przedsięwzięć
* Poznaj różne sposoby prezentacji graficznej diagramów projektów
* Twórz przejrzyste raporty z wykonanych zadań
Większość osób podłączając komputer do Internetu nie uświadamia sobie wszystkich konsekwencji tego faktu. Zyskując dostęp do milionów stron WWW, na których znajdują się informacje na każdy temat, udostępniają hakerom możliwość dotarcia do informacji zapisanych na twardych dyskach swoich komputerów.
Nie warto zastanawiać się, dlaczego ktoś chciałby włamać się do naszego komputera i odczytać (lub co gorsza zniszczyć) nasze dane. Takie włamania nie są bynajmniej rzadkością i nie możemy mieć pewności, że akurat nam nie przydarzy się nic złego. Warto więc zapoznać się z książką "ABC obrony komputera przed atakami hakera", która nawet początkującym dostarczy wielu cennych wskazówek, pozwalających korzystać z dobrodziejstw Internetu bez strachu przed intruzami.
Dowiesz się między innymi:
* Kim są hakerzy, jakie są ich motywy, cele i metody działania
* Jakiego oprogramowania używają hakerzy i w jaki sposób może być dla Ciebie szkodliwe, niebezpieczne
* Jak załatać najważniejsze dziury w zabezpieczeniach systemu Windows
* Jak, używając systemu Linux, zbudować tani i skuteczny firewall
* Z jakich metod szyfrowania możesz skorzystać w celu zabezpieczenia swoich danych
* Jakie zagrożenia niesie za sobą IRC
* Jak zabezpieczyć całą sieć komputerową
test
Active Directory jest złożoną bazą danych i nieodłącznym elementem architektury sieciowej Windows 2000. Pozwala organizacjom skutecznie udostępniać i zarządzać informacjami dotyczącymi zasobów sieciowych i użytkowników. Active Directory gra rolę węzła integrującego ze sobą systemy i pozwalającego na konsolidację zarządzania nimi. W niniejszej książce zawarliśmy doświadczenia nabyte przy implementacji AD:
* Planowanie instalacji AD w terminie i w ramach zaplanowanego budżetu.
* Interakcja AD z innymi usługami sieciowymi: DNS, DHCP, RIS, RRAS i WINS.
* Korzystanie z obiektów zasad grup, praw użytkownika, FSMO i mechanizmów delegowania kontroli.
* Unikanie pułapek w strategiach migracji korzystających z narzędzi migracji Active Directory.
* Administracyjne i polityczne aspekty migracji do AD
W książce Projektowanie struktur Active Directory ponadto znajdziemy:
* Przejrzysty opis AD.
* Wyjaśnienie, dlaczego udane wdrożenie Active Directory wymaga starannego zaplanowania.
* Kilka przykladów pomyślnych implementacji AD.
* Sposoby tworzenia solidnych podstaw dla planowania i implementacji Active Directory.
BeStCAD to znana wielu konstruktorom aplikacja, będąca nakładką na program AutoCAD, przystosowująca go do tworzenia dokumentacji technicznej wszelkich konstrukcji budowlanych i inżynierskich. Książka, autorstwa twórców BeStCAD-a, opisuje funkcje, rozszerzające AutoCAD-a o:
* biblioteki profili PN i DIN, oznaczenia spoin oraz łączniki,
* generator typowych połączeń doczołowych,
* biblioteka typowych gięć prętów wg PN-ISO 4066,
* narzędzia do rozmieszczania prętów,
* automatyczne opisy, numeracja pozycji oraz generatory wykazów materiałów
BeStCAD to wyrafinowana aplikacja, stworzona za pomocą nowoczesnych technik programistycznych. Odmieni ona Twojego AutoCAD-a i oszczędzi Twój czas przy wykonywaniu rysunków konstrukcyjnych. Jeśli przestał Ci już wystarczać sam AutoCAD, to BeStCAD sprawi, że będzie on jeszcze lepszym narzędziem w Twej pracy konstruktora.
Visual Basic przeszedł generalny remont. Istnieje wiele powodów, dla których programiści Visual Basica 6 powinni przesiąść się na nowy Visual Basic .NET. Należy do nich zaliczyć chociażby formularze Web, możliwość tworzenia aplikacji i usług WWW, strukturalną obsługę wyjątków, prawdziwe programowanie zorientowane obiektowo czy też wielowątkowość.
"Visual Basic .NET. Księga eksperta" zawiera dokładne omówienie nowego języka Visual Basic .NET, zunifikowanego środowiska programowania Visual Studio IDE, programowania formularzy WWW, ADO.NET, usługi WWW, GDI+ i wiele innych.
Visual Studio .NET jest środowiskiem bardzo rozbudowanym i potężnym. Aby w pełni je wykorzystać, poznasz także sposoby tworzenia makr oraz znajdziesz omówienie modelu automatyzacji służącego do indywidualizacji zadań i interfejsu IDE w Visual Studio. Książka zawiera wiele przykładów wziętych z praktyki programistycznej.
Książka omawia:
* Środowisko programistyczne Visual Studio, korzystanie z SourceSafe
* Język Visual Basic .NET, programowanie zorientowane obiektowo w VB .NET
* Rozszerzanie środowiska programistycznego za pomocą makr
* Zaawansowane programowanie w VB .NET: refleksje, przeciążanie, programowane oparte na zdarzeniach, polimorfizm, definiowanie atrybutów
* Tworzenie interfejsu użytkownika (aplikacje konsolowe, aplikacje z interfejsem Windows)
* Pisanie aplikacji wielowątkowych
* Uruchamianie usług WWW (Web Services)
"Visual Basic .NET. Księga eksperta" jest doskonałym podręcznikiem dla wszystkich osób, dla których osiągnięcie wysokiej sprawności w posługiwaniu się językiem Visual Basic stanowi podstawę kariery programistycznej. Niezależnie, od tego, czy używałeś poprzedniej wersji tego języka, czy też nie: jeśli chcesz stać się ekspertem Visual Basica, trzymasz w ręku odpowiednią książkę.
Być może Perl jest najlepszym językiem służącym do pisania skryptów CGI, ale skrypty CGI nie są najlepszym sposobem tworzenia aplikacji internetowych. Potrzeba większej wydajności, lepszej integracji z serwerem WWW i pełniejszego wykorzystania jego możliwości doprowadziła do stworzenia modułu mod_perl. Pozwala on na pisanie modułów serwera Apache w Perlu i na pełny dostęp do funkcji API Apache"a z poziomu Perla.
mod_perl jest bardzo rozbudowany, dzięki czemu daje programiście ogromne możliwości. Książka "mod_perl. Podręcznik programisty" będzie nieocenioną pomocą w poznawaniu jego potencjału. Nauczysz się z niej podstaw mod_perla, a gdy już je opanujesz, poznasz tajniki pisania dużych i skomplikowanych aplikacji.
W książce opisano między innymi:
* Instalację i konfigurację mod_perla
* Komunikację mod_perla z Apache
* Działania na adresach URL
* Obsługę plików w środowisku mod_perla
* Tworzenie własnych aplikacji w oparciu o mod_perla
* Osiągania maksymalnej wydajności aplikacji używających mod_perla
* Dodatkowe moduły współpracujące z mod_perlem
Po przeczytaniu tej książki uzyskasz nową perspektywę na programowanie aplikacji sieciowych w Perlu. Programiści Slashdot.org, Internet Movie Database i Wired wybrali mod_perl jako platformę do tworzenia aplikacji. Może i Ty powinieneś pójść w ich ślady?
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
Język XSLT jest jedną z najważniejszych technologii związanych z XML. Za pomocą XSLT możemy przekształcić dokumenty XML, możemy także wygenerować plik HTML lub nawet zwykły plik tekstowy. Specyfikacja tego języka opracowana przez konsorcjum W3C nie jest łatwa w lekturze. Nawet jeśli programowałeś wcześniej w języku zorientowanym obiektowo lub języku strukturalnym, zrozumienie zasady działania XSLT może nastręczać pewne trudności. XSLT został bowiem oparty o zupełnie inny paradygmat, który poznasz w czasie lektury tej książki.
Książka "XSLT dla każdego" w przystępny sposób pomoże zrozumieć i opanować język XSLT. Od czytelników wymaga się jedynie podstawowej znajomości XML i technologii z XML związanych. Podczas pracy z XSLT będziemy jednocześnie pogłębiali swoją znajomość XML. Nauczymy się przekształcać dokumenty XML na kod HTML, dzięki czemu można je przeglądać w przeglądarce, nauczymy się też przetwarzać jedną postać XML na inną.
Przedstawiono:
* Zalety, wady i obszary zastosowania XSLT
* Narzędzia ułatwiające tworzenie i debugowanie plików XSLT, procesory XSLT: MSXML, Saxon, Xalan
* Wybieranie fragmentów dokumentu XML za pomocą XPath
* Użycie reguł, wstawianie tekstu i elementów
* Przetwarzanie warunkowe i iteracyjne, zastosowanie rekurencji
* Tworzenie dokumentów HTML
* Użycie zmiennych i parametrów
* Operacje na łańcuchach, formatowanie danych, sortowanie i numerowanie
* Tworzenie arkuszy złożonych z wielu plików
* Zagadnienia związane z przestrzeniami nazw
* Metodologię projektowania aplikacji opartych na XML i XSLT
Książka "XSLT dla każdego" jest przeznaczona dla osób uczących się XSLT, ale nie tylko dla nich. Przydatna będzie też dla osób znających już podstawy XSLT, gdyż wiele zagadnień omawiamy bardzo szczegółowo. To kompletny przewodnik po tym języku programowania, od podstaw po zagadnienia zaawansowane.
Sieci oparte na protokole TCP/IP podbiły świat. Po ogromnym sukcesie Internetu na dobre zadomowiły się w firmach (intranet), czy w amatorskich sieciach komputerowych wypierając w znacznym stopniu inne rozwiązania. Stąd ogromne zapotrzebowanie na administratorów sieci działających w oparciu o TCP/IP.
"TCP/IP dla każdego" przekaże Ci całą niezbędną wiedzę do administrowania siecią TCP/IP. Ujmuje zarówno zagadnienia podstawowe opisując dokładnie sam protokół, jak i kwestie bardziej skomplikowane, w tym konfigurowanie systemu DNS czy zarządzanie SNMP. Uwzględnione zostały najnowsze, normalizowane dopiero w ostatnich latach technologie, takie jak:
Internet Protocol Security (IPSec)
IPv6
Voice Over IP
Bezprzewodowe sieci lokalne
Uwierzytelnianie RADIUS
Infrastruktura klucza publicznego (PKI)
Książka omawia zarówno teoretyczne podstawy funkcjonowania sieci opartych na TCP/IP, jak i praktyczne sposoby konfigurowania protokołów w różnorodnych systemach operacyjnych stosowanych we współczesnych sieciach. Zgodnie z tytułem, jest to publikacja kierowana do szerokiego grona Czytelników: początkujących i zaawansowanych, dla administratora-praktyka i dla studenta. Temu ostatniemu z pewnością pomogą sprawdzające pytania, które podsumowują każdy rozdział książki.
Dzięki poradom i wskazówkom zawartym w tej książce Czytelnik zmieni się ze zwykłego użytkownika komputera PC w administratora sieciowego. Chociaż książka przeznaczona jest dla początkujących, także profesjonaliści zajmujący się sieciami i telekomunikacją znajdą tu wiele przydatnych wiadomości. "ABC sieci komputerowych" to kompendium wiedzy zarówno o zagadnieniach dotyczących infrastruktury sieciowej jak i kwestii związanych z oprogramowaniem używanym w sieciach.
Lektura tej książki sprawi, że:
* Nauczysz się odróżniać typy sieci i wybierzesz technologię sieciową najlepiej odpowiadającą Twoim potrzebom
* Zapoznasz się z różnymi składnikami sprzętu komputerowego wykorzystywanymi do tworzenia sieci
* Poznasz architekturę sieci komputerowych
* Zapoznasz się z teorią i praktyką dotyczącą komunikacji w sieci
* Poznasz protokoły internetowe (FTP, POP3, SMTP, IMAP, TCP/IP)
* Nauczysz się projektować i konfigurować sieci oraz dowiesz się, w jaki sposób udostępniać w sieci zasoby, takie jak drukarki czy dyski
* Będziesz mógł uruchamiać serwery WWW
* Zapoznasz się z metodami ochrony danych, ochrony sieci przed atakami oraz ochrony systemu przed wirusami
* Będziesz znał praktyczne sposoby rozwiązywania problemów związanych z sieciami
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.
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.
Kompendium wiedzy dla każdego programisty, projektanta i kierownika projektu
* Nowoczesne metodyki wytwarzania oprogramowania
* Narzędzia do modelowania aplikacji i automatycznego generowania kodu
* Koncepcja architektury sterowanej modelami
* Sposoby zapewnienia jakości aplikacji
Tworzenie aplikacji korporacyjnych to wyścig z czasem. Organizacje zmieniają się podobnie jak otoczenie biznesowe, w którym działają. Zbyt długi okres przygotowania aplikacji może sprawić, że po wdrożeniu okaże się ona bezużyteczna. Z drugiej jednak strony, zbyt duży pośpiech przy tworzeniu aplikacji powoduje, że pomija się fazę modelowania i testowania, pisząc kod źródłowy bez jakiejkolwiek koncepcji i planu. Efektem takiego pośpiechu są aplikacje niedostosowane do wymagań użytkowników i pracujące niestabilnie. Sposobem na stworzenie odpowiedniego systemu informatycznego dla korporacji jest wykorzystywanie odpowiednich metodyk projektowych i nowoczesnych narzędzi ułatwiających zarówno pisanie, jak i testowanie aplikacji.
Książka "J2EE. Podstawy programowania aplikacji korporacyjnych" przedstawia najlepsze praktyki projektowe stosowane przy tworzeniu systemów informatycznych z wykorzystaniem platformy J2EE. Opisano w niej kolejne etapy projektu oraz narzędzia i metodyki, dzięki którym przeprowadzenie każdego z nich będzie szybsze i efektywniejsze. Czytając ją, poznasz metodyki RUP i XP, typy architektur systemów oraz sposoby modelowania aplikacji i narzędzia do automatycznego generowania szkieletu kodu źródłowego. Dowiesz się, jak optymalnie skonfigurować środowiska programistyczne i jak testować kolejne moduły aplikacji. Nauczysz się korzystać z nowoczesnych metodyk i narzędzi.
* Podstawowe wiadomości o błyskawicznym wytwarzaniu aplikacji (RAD)
* Metodyki projektowe Rational Unified Process (RUP) oraz Extreme Programming (XP)
* Wielowarstwowe architektury systemów
* Modelowanie systemów za pomocą języka UML
* Automatyczne generowanie kodu
* Stosowanie narzędzi XDoclet i Hibernate
* Komunikacja z bazami danych
* Zasady programowania aspektowego
* Testowanie aplikacji
Wiadomości zawarte w tej książce sprawią, że będziesz w stanie szybciej projektować i tworzyć aplikacje korporacyjne.
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
Przygotuj projekt systemu informatycznego,
który naprawdę spełni oczekiwania użytkowników
* Wybierz technologię, platformę sprzętową i model licencjonowania
* Zadbaj o funkcjonalność i łatwość rozbudowy systemu
* Zabezpiecz system przed piractwem, kradzieżą i utratą danych
Termin "architektura oprogramowania" kojarzy się zwykle z doborem języka programowania, wzajemnymi zależnościami między komponentami powstającego systemu informatycznego, wyborem platformy bazodanowej i zaplanowaniem innych elementów związanych wyłącznie z zagadnieniami technicznymi. Tymczasem w opisie architektury systemu nie wolno pomijać także innych kwestii: modelu licencjonowania, sposobu wdrażania i konserwacji systemu, a przede wszystkim jego użyteczności. Te pozornie niezwiązane z projektem elementy mogą mieć duży wpływ na powodzenie przedsięwzięcia, jakim jest stworzenie i sprzedaż oprogramowania. Odpowiednio przygotowany projekt systemu informatycznego powinien więc obejmować zarówno zagadnienia techniczne, jak i ekonomiczne.
Książka "Więcej niż architektura oprogramowania" to poradnik, dzięki któremu stworzenie odpowiedniej relacji między technologią a biznesem jest łatwiejsze, niż mogłoby się wydawać. Może się przydać zarówno menedżerowi, jak i programiście. Autor książki, doświadczony kierownik projektów i twórca oprogramowania, przedstawia związki między zagadnieniami technicznymi a innymi aspektami. Znajdziesz w niej opisy dobrych i skutecznych rozwiązań oraz zaczerpnięte z rynku przykłady planowania produkcji oprogramowania.
* Znaczenie architektury oprogramowania
* Zarządzanie oprogramowaniem jako produktem
* Modele licencjonowania
* Wykorzystywanie obcych technologii w projekcie
* Wdrażanie systemu
* Obsługa techniczna
* Dobór marki
* Funkcjonalność i łatwość obsługi
* Zabezpieczanie aplikacji
Sprawy z pozoru mało ważne często powodują największe problemy. Nie ignoruj ich. Pracuj nad projektem kompleksowo.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Sprzedaj swój program. Droga do udanych projektów programistycznychWydawnictwo Helion
Stwórz niezawodne oprogramowaniespełniające oczekiwania użytkowników
* Wykorzystuj odpowiednie narzędzia projektowe.
* Wdrażaj nowoczesne metodologie.
* Szybko rozwiązuj problemy.
Dyskusje nad wadami i zaletami przeróżnych metodologii tworzenia oprogramowania, mające na celu wyłonienie najlepszej z nich, zwykle do niczego nie prowadzą. Zwolennicy poszczególnych metodologii, takich jak Rational Unified Process, programowanie ekstremalne i inne, starają się udowodnić, że to ich stanowisko jest poprawnym sposobem realizacji projektów informatycznych. Tymczasem nie istnieje "jedyne słuszne" i uniwersalne podejście, które sprawdza się we wszystkich okolicznościach. Wybór właściwej metodologii w ogromnej mierze zależy od typu projektu i wielkości zespołu pracującego nad nim. Należy kierować się nastawieniem czysto pragmatycznym, czyli wybrać taką metodologię, która będzie najbardziej korzystna dla określonego projektu. Niewłaściwy wybór może skończyć się porażką.
Książka "Sprzedaj swój program. Droga do udanych projektów programistycznych" to zbiór wskazówek przedstawiających narzędzia i techniki, dzięki którym każdy projekt programistyczny zakończy się sukcesem. Czytając ją, nauczysz się korzystać z nowoczesnych instrumentów wykorzystywanych do projektowania oprogramowania, kontroli wersji kodu źródłowego i śledzenia procesu usuwania błędów. Dowiesz się, w jaki sposób zorganizować pracę zespołu projektowego i wdrażać metodologię wytwarzania oprogramowania. Porady, które znajdziesz w tej książce, pomogą Ci rozwiązać problemy pojawiające się podczas realizacji projektów programistycznych. Poznasz nowoczesne metody oraz dowiesz się, kiedy i jak z nich korzystać.
* Planowanie infrastruktury
* Dobór narzędzi projektowych
* Automatyzacja zadań
* Tworzenie listy zadań
* Rola kierownika technicznego
* Metodologia pocisku smugowego
* Rozwiązywanie problemów
Wskazówki zawarte w tej książce sprawią, że każdy prowadzony przez Ciebie projekt zakończy się w terminie i zmieści w wyznaczonym budżecie.
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
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...]
Poznaj nowoczesną metodykę wytwarzania oprogramowania w C#
* Jak stosować w praktyce zasady zwinnego wytwarzania oprogramowania?
* W jaki sposób wykorzystywać w projekcie diagramy UML?
* Jak korzystać z wzorców projektowych?
W związku ze stale rosnącymi oczekiwaniami użytkowników oprogramowania produkcja systemów informatycznych wymaga dziś korzystania z usystematyzowanych metod zarządzania. Projekt informatyczny, przy którym nie używa się sensownej metodologii wytwarzania, jest skazany na porażkę -- przekroczenie terminu, budżetu i niespełnienie wymagań funkcjonalnych. Kierowanie projektem zgodnie z określonymi zasadami również nie gwarantuje sukcesu, lecz znacznie ułatwia jego osiągnięcie. Na początku roku 2001 grupa ekspertów zawiązała zespół o nazwie Agile Alliance. Efektem prac tego zespołu jest metodologia zwinnego wytwarzania oprogramowania -- Agile.
Książka "Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#" to podręcznik metodologii Agile przeznaczony dla twórców oprogramowania korzystających z technologii .NET. Dzięki niemu poznasz podstawowe założenia i postulaty twórców Agile i nauczysz się stosować je w praktyce. Dowiesz się, jak szacować terminy i koszty, dzielić proces wytwarzania na iteracje i testować produkt. Zdobędziesz wiedzę na temat refaktoryzacji, diagramów UML, testów jednostkowych i wzorców projektowych. Przeczytasz także o publikowaniu kolejnych wersji oprogramowania.
* Techniki programowania ekstremalnego
* Planowanie projektu
* Testowanie i refaktoryzacja
* Zasady zwinnego programowania
* Modelowanie oprogramowania za pomocą diagramów UML
* Stosowanie wzorców projektowych
* Projektowanie pakietów i komponentów
Przekonaj się, ile czasu i pracy zaoszczędzisz,
stosując w projektach metodologię Agile.
>> Poznaj warunki zakupu
Chyba w każdej firmie można dziś znaleźć komputer. Dzięki wiadomościom z tej publikacji wykorzystasz wszystkie możliwości, jakie otwiera przed nowoczesną firmą zastosowanie technologii informatycznych. Przekonasz się, o ile sprawniej może przebiegać Twoja praca.
* Usprawnij działanie firmy, stosując nowoczesne narzędzia
* Zabezpiecz dane, wykonaj kopie bezpieczeństwa i uchroń się przed wirusami
* Przygotuj profesjonalną korespondecję i dokumenty finansowe, wykorzystując pakiet MS Office
* Zaprezentuj ofertę firmy dzięki możliwościom aplikacji PowerPoint
* Wykorzystaj możliwości sieci lokalnej i internetu
Technologie informatyczne wspomagają niemal każdą dziedzinę życia. Najczęściej jednak komputery spotkać można w przedsiębiorstwach, gdzie wykorzystywane są do różnych zadań. Pełnią rolę narzędzi do projektowania, przeprowadzania obliczeń, składowania i przetwarzania danych, wyszukiwania informacji czy też przygotowywania materiałów reklamowych firmy. Czasochłonne zadania, które kiedyś zabierały kilka dni pracy, obecnie wykonuje się w ciągu kilku godzin. Umiejętność obsługi komputera jest dziś jedną z najistotniejszych kwalifikacji pracownika nowoczesnego przedsiębiorstwa.
"Komputer PC w nowoczesnej firmie" to podręczny poradnik przeznaczony dla wszystkich, którzy w pracy korzystają z komputera, przedstawiający możliwości najpopularniejszych aplikacji. Każda z części książki opisuje inną dziedzinę zastosowań komputera w firmie. Znajdziesz tu najbardziej aktualne informacje o wszystkich zagadnieniach, z jakimi możesz zetknąć się podczas użytkowania komputera w pracy: od najnowszych metod zabezpieczania danych i ochrony przed wirusami, poprzez edycję dokumentów tekstowych i arkuszy kalkulacyjnych w najpopularniejszych aplikacjach biurowych, aż do sposobów korzystania z sieci biurowej oraz internetu. Dzięki temu poradnikowi będziesz zawsze na bieżąco z najnowszymi wersjami aplikacji biurowych i osiągnięciami technologii informatycznych.
* Ochrona danych
* Sposoby walki z wirusami i spamem
* Projektowanie elementów graficznych
* Edycja i formatowanie tekstów
* Przygotowywanie korespondencji seryjnej
* Zestawienia i raporty
* Profesjonalna prezentacja
* Baza danych
* Sieci komputerowe i internet
Na wydawanych kwartalnie płytach CD znajdziesz materiały pomocnicze, ciekawe aplikacje i przykłady zastosowań technik opisanych w niniejszej publikacji.
Wspomaganie planowania zadań i zarządzania przedsiębiorstwem
Microsoft Project 2002 to kolejna już wersja popularnego programu do zarządzania przedsięwzięciami. Jeżeli jesteś osobą odpowiedzialną za utworzenie harmonogramu przedsięwzięcia, oszacowanie jego kosztów, zarządzanie zasobami ludzkimi i sprzętowymi lub jeśli chcesz porównywać plan z jego wykonaniem - ten program ułatwi Ci pracę.
Podręcznik łączy teorię z praktyką. Opisano w nim teoretyczne podstawy poszczególnych narzędzi dostępnych w MS Project 2002. Część praktyczna następująca po wyjaśnieniach teoretycznych umożliwia wykorzystanie nabytych wiadomości. Ma ona formę ćwiczeń. Dzięki ich wykonaniu nabędziesz umiejętności, które później z całą pewnością będą przydatne w pracy.
Omówiono:
* Interfejs programu MS Project i sposoby wyświetlania danych za pomocą widoków
* Zarządzanie zadaniami i zasobami
* Przydzielanie zasobów do zadań
* Kalendarze - ustalanie czasu pracy i dni wolnych
* Tworzenie budżetu projektu i analiza przepływów gotówkowych
* Rozwiązywanie problemów z nadmiernym obciążeniem zasobów i optymalizacja projektu
* Analizy odchyleń terminów, kosztów oraz pracy
* Tworzenie raportów
* Wymianę informacji pomiędzy MS Project i innymi aplikacjami
* Wspomaganie planowania zadań i zarządzania przedsięwzięciami
Książka ta zawiera wiele cennych informacji zarówno dla tych użytkowników rozpoczynających pracę z aplikacją MS Project, jak i dla tych, którzy mają doświadczenie z tą i poprzednimi wersjami programu. W przypadku, gdyby niektóre ćwiczenia sprawiały jednak problem, na płycie CD zawarte są filmy instruktażowe zapisane w formacie wmv. Zawierają one zapis wideo niektórych czynności opisanych w treści ćwiczeń.
* Twórz nowe projekty, zarządzaj zadaniami i przydzielaj zasoby
* Zautomatyzuj opracowywanie budżetu swoich przedsięwzięć
* Poznaj różne sposoby prezentacji graficznej diagramów projektów
* Twórz przejrzyste raporty z wykonanych zadań
Badanie struktur danych, elementarnych składników wykorzystywanych w informatyce, jest podstawą, w oparciu o którą możesz zdobywać cenne umiejętności. Znajomość struktur danych jest niezbędna studentom, którzy chcą programować czy też testować oprogramowanie.
W niniejszej książce zwrócono uwagę na trzy ważne aspekty struktur danych: po pierwsze, na związek struktur danych z algorytmami, między innymi na złożoność obliczeniową algorytmów. Po drugie, struktury te prezentowane są w sposób zgodny z zasadami projektowania obiektowego i obiektowym paradygmatem programowania. Po trzecie, ważną częścią książki są implementacje struktur danych w języku C++.
Książka prezentuje:
* Podstawy projektowania obiektowego w C++
* Analizę złożoności
* Listy powiązane
* Stosy i kolejki
* Rekurencję
* Drzewa binarne
* Sterty
* Drzewa wielokrotne
* Grafy
* Sortowanie i mieszanie
* Kompresja danych
* Zarządzanie pamięcią
Książka ta dostarcza studentom informatyki nie tylko niezbędnej wiedzy na temat algorytmów i struktur danych, ale prezentuje jednocześnie sposoby ich implementacji w języku C++, obecnie jednym z wiodących języków programowania. Dostarcza ona więc nie tylko wiedzy teoretycznej, ale również pozwala rozwinąć praktyczne umiejętności przydatnych w przyszłej pracy zawodowej.
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.
MS Project 2003. Zarządzanie projektami. Edycja limitowanaWydawnictwo Helion
Poznaj nowoczesne narzędzie pracy kierownika projektów
* Zdefiniuj projekt
* Zarządzaj zadaniami i zasobami
* Wygeneruj raporty
Zarządzanie projektami to dziedzina wiedzy, która w ostatnich latach bardzo dynamicznie się rozwija i zyskuje na znaczeniu. W firmach na całym świecie stosuje się je do usprawnienia działalności przedsiębiorstwa. Zarządzanie projektami, podobnie jak niemal wszystkie dziedziny nauki, stało się również poważnym wyzwaniem dla twórców oprogramowania. Na rynku dostępnych jest kilka pakietów wspomagających zarządzanie projektami, wśród których ogromną popularność zyskał MS Project. Jego wersje Standard i Professional w pełni odpowiadają potrzebom firm różnej wielkości.
Książka "MS Project 2003. Zarządzanie projektami" to podręcznik, dzięki któremu poznasz zasady pracy z tą aplikacją. Opisuje jej interfejs użytkownika, narzędzia i polecenia menu. Przedstawia sposoby definiowania projektu, harmonogramowania oraz zarządzania zasobami i zadaniami. Czytając ją, dowiesz się, jak wprowadzać dane dotyczące faktycznej realizacji projektu, generować wykresy i raporty oraz wymieniać dane z MS Project z innymi aplikacjami.
* Interfejs użytkownika i paski narzędzi
* Definiowanie projektu i jego właściwości
* Wprowadzanie nowych zadań
* Zarządzanie zasobami
* Tworzenie kalendarza projektu
* Optymalizacja zadań projektowych
* Generowanie raportów
* Dostosowywanie programu do własnych potrzeb
* Praca zespołowa nad projektem
* Korzystanie z narzędzi Project Server oraz Project Web Access
MS Project nie podejmie za Ciebie decyzji,
ale na pewno bardzo wspomoże Twoją pracę.
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
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
Wykorzystaj pełnię możliwości baz danych
* Na czym polega model relacyjny?
* W jaki sposób pobierać dane z bazy?
* Jak projektować bazy danych i tabele?
Systemy zarządzania bazami danych to aplikacje, które spotkać można praktycznie w każdej firmie.
Na rynku dostępnych jest wiele takich narzędzi, różniących się od siebie wydajnością, wymaganiami sprzętowymi, potencjalnymi zastosowaniami i - przede wszystkim — ceną. Użytkownicy mogą wybierać zarówno wśród rozwiązań komercyjnych, jak i nieustępujących im rozwiązań bezpłatnych. Cechą łączącą wszystkie systemy zarządzania bazami danych jest język, na którym opiera się praca z nimi - SQL. To ustandaryzowany zbiór poleceń pozwalających na niemal dowolne manipulacje danymi zgromadzonymi w bazach, tworzenie nowych baz oraz administrowanie serwerami baz danych. Bez jego znajomości wykorzystanie pełni możliwości bazy danych jest praktycznie niemożliwe.
„Praktyczny kurs SQL” to książka, dzięki której poznasz ten język. Czytając ją, dowiesz się, czym jest relacyjność w bazach danych, jak skonstruowane są takie bazy i czym są postaci normalne. Nauczysz się pobierać dane w oparciu o różne kryteria, przetwarzać uzyskane wyniki i wyświetlać je na ekranie w odpowiedni sposób. Poznasz funkcje pozwalające na modyfikację istniejących i dodawanie nowych danych, zastosujesz zapytania złożone i podzapytania oraz wykorzystasz mechanizmy transakcji. Przeczytasz także o projektowaniu baz danych oraz definiowaniu i nadawaniu uprawnień do korzystania z nich.
* Modele baz danych
* Postaci normalne w modelu relacyjnym
* Historia języka SQL
* Pobieranie danych za pomocą instrukcji SELECT
* Dobór kryteriów wybierania
* Przetwarzanie wyników zapytań
* Zapytania złożone i podzapytania
* Transakcje
* Modyfikowanie i dodawanie danych
* Projektowanie baz danych
* Uprawnienia
Uzupełnieniem do książki jest udostępniona tutaj baza danych.
Poznaj w praktyce język będący podstawą wszystkich nowoczesnych systemów zarządzania bazami danych.
SolidWorks 2006 to aplikacja do modelowania 3D przeznaczona dla konstruktorów, oferująca uniwersalny zestaw narzędzi do modelowania powierzchniowego i bryłowego. Kolejne wersje tej aplikacji już tradycyjnie wytyczają nowe trendy wśród programów z tej grupy. Niezwykle intuicyjna obsługa programu, bazująca na znanych z systemu Windows mechanizmach "przeciągnij i upuść", pozwala nawet początkującym użytkownikom osiągnąć biegłość w ciągu kilku tygodni. Ogromna liczba narzędzi i modułów wspomagających sprawia, iż program ten doskonale wspomaga pracę projektanta. Wielką zaletą programu jest również możliwość wymiany plików z wieloma aplikacjami CAD/CAM/CAE, co umożliwia współpracę w ramach nawet największych zespołów projektowych.
Książka "SolidWorks 2006 w praktyce" to podręcznik dla początkujących użytkowników tej potężnej aplikacji. Przedstawia na przykładach zasady korzystania z SolidWorks 2006. Czytając ją, poznasz interfejs użytkownika i dostosujesz go do własnych potrzeb, a także nauczysz się wykorzystywać narzędzia do modelowania. Dowiesz się, w jaki sposób tworzyć części i złożenia, przeprowadzać analizy wytrzymałościowe metodą elementów skończonych za pomocą modułu CosmosXpress oraz jak ustrzec się błędów w projekcie, wykorzystując możliwość projektowania w przestrzeni. Dzięki zawartym w niej ćwiczeniom nauczysz się budować nawet najbardziej złożone konstrukcje.
* Konfigurowanie środowiska pracy
* Zarządzanie plikami danych
* Szkicowanie na płaszczyźnie oraz w przestrzeni
* Wymiarowanie w dwóch i trzech wymiarach
* Tworzenie brył części oraz elementów powierzchniowych
* Przygotowanie modelu formy wtryskowej na podstawie szkicu koncepcyjnego
* Tworzenie złożeń części oraz projektowanie "na złożeniu"
* Symulacja rozpływu masy w formie wtryskowej
* Obliczenia wytrzymałościowe
* Renderowanie projektów
* Tworzenie dokumentacji technicznej
Wykorzystaj nowoczesne narzędzia wspomagające pracę konstruktora i twórz, skupiając się na projekcie, a nie na narzędziu do projektowania.
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.
Similar to Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowej (20)
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!
Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowej
1. IDZ DO
PRZYK£ADOWY ROZDZIA£ Projektowanie
SPIS TRE CI
oprogramowania.
Wstêp do programowania
KATALOG KSI¥¯EK i techniki komputerowej
KATALOG ONLINE Autorzy: Matthias Felleisen, Robert Bruce Findler,
Matthew Flatt, Shriram Krishnamurthi
T³umaczenie: Bartosz Grabski, Miko³aj Szczepaniak
ZAMÓW DRUKOWANY KATALOG ISBN: 83-7197-922-3
Tytu³ orygina³u: How to Design Programs
TWÓJ KOSZYK Format: B5, stron: 644
Przyk³ady na ftp: 32 kB
DODAJ DO KOSZYKA 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
CENNIK I INFORMACJE programi ci tworz¹ skomplikowane aplikacje. Programowanie jest wiêc bardzo
po¿¹dan¹ umiejêtno ci¹, potrzebn¹ nie tylko informatykom. Projektowanie
ZAMÓW INFORMACJE oprogramowania wymaga takich samych zdolno ci analitycznych, jak matematyka.
O NOWO CIACH Jednak, w przeciwieñstwie do matematyki, praca z programami jest aktywnym
sposobem zdobywania wiedzy. Obcowanie z oprogramowaniem daje mo¿liwo æ sta³ej
ZAMÓW CENNIK 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
CZYTELNIA 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
FRAGMENTY KSI¥¯EK ONLINE 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
Wydawnictwo Helion komputerowej” skorzystaj¹ zarówno studenci informatyki, jak te¿ i s³uchacze innych
ul. Chopina 6
kierunków oraz wszystkie osoby, które chc¹ podbudowaæ swoj¹ wiedzê praktyczn¹
44-100 Gliwice
solidnymi i przydatnymi podstawami teoretycznymi.
tel. (32)230-98-63
e-mail: helion@helion.pl
2. Spis treści
Przedmowa ............................................................................................................9
Dlaczego każdy powinien uczyć się programować? .................................................................... 11
Metody projektowania ....................................................................................................................... 12
Wybór Scheme i DrScheme ............................................................................................................... 14
Podział książki..................................................................................................................................... 15
Podziękowania .................................................................................................................................... 18
Część I Przetwarzanie prostych typów danych 19
1. Studenci, nauczyciele i komputery..........................................................21
2. Liczby, wyrażenia i proste programy .....................................................23
Liczby i arytmetyka ............................................................................................................................ 23
Zmienne i programy .......................................................................................................................... 26
Problemy ze zrozumieniem treści zadań ........................................................................................ 29
Błędy...................................................................................................................................................... 30
Projektowanie programów................................................................................................................ 33
3. Program składa się z funkcji i definicji zmiennych ..............................39
Składanie funkcji................................................................................................................................. 40
Definicje zmiennych ........................................................................................................................... 43
Proste ćwiczenia w tworzeniu funkcji............................................................................................. 44
4. Instrukcje warunkowe i funkcje...............................................................47
Wartości logiczne i relacje ................................................................................................................. 47
Funkcje testujące warunki ................................................................................................................. 50
Warunki i funkcje warunkowe ......................................................................................................... 54
Projektowanie funkcji warunkowych.............................................................................................. 57
5. Informacje symboliczne.............................................................................63
Proste ćwiczenia z symbolami.......................................................................................................... 65
6. Dane złożone. Część 1.: Struktury ...........................................................69
Struktury .............................................................................................................................................. 69
Ćwiczenie rozszerzone: rysowanie prostych obrazów .................................................................... 72
3. 4 SPIS TREŚCI
Definicje struktur ................................................................................................................................ 75
Definicje danych.................................................................................................................................. 79
Projektowanie funkcji przetwarzających dane złożone .................................................................... 82
Rozszerzone ćwiczenie: przemieszczanie okręgów i prostokątów ............................................ 87
Rozszerzone ćwiczenie: gra w szubienicę ...................................................................................... 91
7. Rodzaje danych...........................................................................................95
Mieszanie i rozróżnianie danych ..................................................................................................... 95
Projektowanie funkcji przetwarzających dane mieszane ........................................................... 100
Składanie funkcji — powtórka ....................................................................................................... 104
Rozszerzone ćwiczenie: przesuwanie figur.................................................................................. 107
Błędne dane wejściowe .................................................................................................................... 108
W1. Składnia i semantyka ...............................................................................111
Słownictwo języka Scheme ............................................................................................................. 112
Gramatyka języka Scheme .............................................................................................................. 112
Znaczenie w języku Scheme ........................................................................................................... 114
Błędy ........................................................ ...........................................................................................118
Wyrażenia logiczne .......................................................................................................................... 121
Definicje zmiennych ......................................................................................................................... 122
Definicje struktur .............................................................................................................................. 124
Część II Przetwarzanie danych dowolnej wielkości 127
9. Dane złożone. Część 2.: Listy .................................................................129
Listy .....................................................................................................................................................129
Definicje danych dla list o dowolnej długości ............................................................................. 133
Przetwarzanie list o dowolnej długości ........................................................................................ 135
Projektowanie funkcji dla rekursywnych definicji danych........................................................ 139
Więcej na temat przetwarzania prostych list ............................................................................... 142
10. Więcej na temat przetwarzania list........................................................147
Funkcje zwracające listy................................................................................................................... 147
Listy zawierające struktury ............................................................................................................. 152
Rozszerzone ćwiczenie: przemieszczanie obrazów .................................................................... 158
11. Liczby naturalne .......................................................................................161
Definiowanie liczb naturalnych...................................................................................................... 161
Przetwarzanie liczb naturalnych dowolnej wielkości................................................................. 163
Rozszerzone ćwiczenie: tworzenie list, testowanie funkcji........................................................ 166
Alternatywne definicje danych dla liczb naturalnych .................................................................. 168
Więcej o naturze liczb naturalnych................................................................................................ 173
12. Łączenie funkcji. Powtórka.....................................................................177
Projektowanie skomplikowanych programów ............................................................................ 177
Rekursywne funkcje zewnętrzne ................................................................................................... 178
Uogólnianie problemów i funkcji................................................................................................... 183
Rozszerzone ćwiczenie: przestawianie słów ................................................................................ 187
W2. Skracanie list .............................................................................................191
4. SPIS TREŚCI 5
Część III Więcej o przetwarzaniu danych
dowolnej wielkości 197
14. Więcej rekurencyjnych definicji danych ...............................................199
Struktury w strukturach .................................................................................................................. 199
Rozszerzone ćwiczenie: drzewa poszukiwań binarnych ........................................................... 208
Listy w listach.................................................................................................................................... 212
Rozszerzone ćwiczenie: obliczanie wyrażeń języka Scheme..................................................... 215
15. Wzajemne odwołania w definicjach danych........................................217
Listy struktur. Listy w strukturach................................................................................................ 217
Projektowanie funkcji dla definicji danych zawierających wzajemne odwołania ................. 223
Rozszerzone ćwiczenie: więcej na stronach WWW..................................................................... 225
16. Tworzenie programów metodą iteracyjnego ulepszania...................227
Analiza danych.................................................................................................................................. 228
Definiowanie i ulepszanie klas danych......................................................................................... 229
Ulepszanie funkcji i programów .................................................................................................... 232
17. Przetwarzanie dwóch skomplikowanych elementów danych .........235
Jednoczesne przetwarzanie dwóch list. Przypadek 1. ................................................................. 235
Jednoczesne przetwarzanie dwóch list. Przypadek 2. ................................................................. 237
Jednoczesne przetwarzanie dwóch list. Przypadek 3. ................................................................. 240
Upraszczanie funkcji ........................................................................................................................ 245
Projektowanie funkcji pobierających dwie złożone dane wejściowe ....................................... 247
Ćwiczenia z przetwarzania dwóch złożonych danych wejściowych....................................... 248
Rozszerzone ćwiczenie: obliczanie wyrażeń języka Scheme. Część 2. .................................... 251
Równość i testowanie....................................................................................................................... 253
W3. Lokalne definicje i zasięg leksykalny ....................................................261
Organizowanie programów za pomocą słowa local................................................................... 261
Zasięg leksykalny i struktura blokowa ......................................................................................... 276
Część IV Projektowanie abstrakcyjne 281
19. Podobieństwa w definicjach ...................................................................283
Podobieństwa w funkcjach.............................................................................................................. 283
Podobieństwa w definicjach danych ............................................................................................. 292
20. Funkcje są wartościami............................................................................297
Składnia i semantyka ....................................................................................................................... 297
Kontrakty dla abstrakcyjnych i polimorficznych funkcji ........................................................... 299
21. Projektowanie funkcji abstrakcyjnych na podstawie przykładów...303
Abstrahowanie na podstawie przykładów................................................................................... 303
Ćwiczenia z abstrakcyjnymi funkcjami przetwarzającymi listy ............................................... 309
Abstrakcja i pojedynczy punkt kontroli........................................................................................ 311
Rozszerzone ćwiczenie: przemieszczanie obrazów jeszcze raz ................................................ 312
Uwaga: Projektowanie abstrakcji na podstawie szablonów ...................................................... 314
5. 6 SPIS TREŚCI
22. Projektowanie abstrakcji .........................................................................317
Funkcje zwracające funkcje ............................................................................................................. 317
Projektowanie abstrakcji z funkcjami jako wartościami............................................................. 319
Pierwsze spojrzenie na graficzny interfejs użytkownika ........................................................... 322
23. Przykłady matematyczne........................................................................331
Ciągi i szeregi .................................................................................................................................... 331
Ciągi i szeregi arytmetyczne ........................................................................................................... 333
Ciągi i szeregi geometryczne .......................................................................................................... 334
Pole powierzchni pod wykresem funkcji...................................................................................... 338
Nachylenie funkcji ............................................................................................................................ 340
W4. Bezpośrednie definiowanie funkcji .......................................................345
Część V Rekursja generatywna 351
25. Nowa postać rekursji ...............................................................................353
Modelowanie kuli na stole .............................................................................................................. 354
Szybkie sortowanie........................................................................................................................... 357
26. Projektowanie algorytmów.....................................................................363
Zakończenie ....................................................................................................................................... 365
Rekursja strukturalna a generatywna............................................................................................ 368
Dokonywanie wyborów .................................................................................................................. 369
27. Różne algorytmy rekurencyjne ..............................................................375
Fraktale ............................................................................................................................................... 375
Od plików do linii, od list do list list............................................................................................. 380
Wyszukiwanie binarne .................................................................................................................... 384
Metoda Newtona .............................................................................................................................. 390
Rozszerzone ćwiczenie: eliminacja Gaussa .................................................................................. 392
28. Algorytmy z nawracaniem .....................................................................397
Przechodzenie grafów...................................................................................................................... 397
Rozszerzone ćwiczenie: szachowanie hetmanów........................................................................ 403
W5. Koszt obliczeniowy oraz wektory .........................................................405
Czas konkretny, czas abstrakcyjny ................................................................................................ 405
Definicja wyrażenia „rzędu”........................................................................................................... 410
Pierwsze spojrzenie na wektory..................................................................................................... 412
Część VI Gromadzenie wiedzy 423
30. Utrata wiedzy ...........................................................................................425
Problem przetwarzania strukturalnego ........................................................................................ 425
Problem rekursji generatywnej....................................................................................................... 429
31. Projektowanie funkcji z akumulatorem................................................433
Czy akumulator jest potrzebny? .................................................................................................... 433
Funkcje z akumulatorem ................................................................................................................. 434
Przekształcanie funkcji na funkcje z akumulatorem................................................................... 436
6. SPIS TREŚCI 7
32. Dalsze użycie akumulacji........................................................................447
Rozszerzone ćwiczenie: akumulatory i drzewa........................................................................... 447
Rozszerzone ćwiczenie: misjonarze i ludożercy .......................................................................... 452
Rozszerzone ćwiczenie: plansza gry Solitaire .............................................................................. 455
W6. Natura liczb niedokładnych ...................................................................457
Arytmetyka liczb o stałym rozmiarze ........................................................................................... 457
Przepełnienie ..................................................................................................................................... 463
Niedomiar .......................................................................................................................................... 464
Liczby w DrScheme.......................................................................................................................... 465
Część VII Zmiana stanu zmiennych 467
34. Pamięć dla funkcji ....................................................................................469
35. Przypisanie do zmiennych......................................................................475
Działanie prostych przypisań ......................................................................................................... 475
Sekwencja wyrażeń obliczeniowych.............................................................................................. 477
Przypisania i funkcje ........................................................................................................................ 479
Pierwszy użyteczny przykład......................................................................................................... 482
36. Projektowanie funkcji z pamięcią ..........................................................485
Zapotrzebowanie na pamięć ........................................................................................................... 485
Pamięć i zmienne stanu ................................................................................................................... 487
Funkcje inicjalizujące pamięć .......................................................................................................... 489
Funkcje zmieniające pamięć ............................................................................................................ 489
37. Przykłady zastosowania pamięci...........................................................497
Inicjalizacja stanu .............................................................................................................................. 497
Zmiana stanu przez interakcję z użytkownikiem ....................................................................... 500
Zmiany stanu przez rekursję .......................................................................................................... 508
Ćwiczenia na zmianach stanu ........................................................................................................ 514
Rozszerzone ćwiczenie: zwiedzanie .............................................................................................. 516
W7. Końcowa składnia i semantyka..............................................................519
Słownik Advanced Scheme ............................................................................................................. 519
Gramatyka Advanced Scheme ....................................................................................................... 519
Znaczenie Advanced Scheme ......................................................................................................... 522
Błędy w Advanced Scheme............................................................................................................. 534
Część VIII Zmiana wartości złożonych 539
39. Hermetyzacja ............................................................................................541
Abstrahowanie ze zmiennymi stanu ............................................................................................. 541
Ćwiczenia z hermetyzacji ................................................................................................................ 551
40. Mutacja struktur .......................................................................................553
Struktury z funkcji ............................................................................................................................ 553
Mutacja struktur funkcjonalnych ................................................................................................... 556
7. 8 SPIS TREŚCI
Mutacja struktur................................................................................................................................ 558
Mutacja wektorów ............................................................................................................................ 565
Zmiana zmiennych, zmiana struktur ............................................................................................ 567
41. Projektowanie funkcji zmieniających struktury ..................................571
Po co mutować struktury ................................................................................................................ 571
Zasady projektowania strukturalnego i mutacji, część 1. .......................................................... 572
Zasady projektowania strukturalnego i mutacji, część 2. .......................................................... 583
Ćwiczenie rozszerzone: ruchome obrazy po raz ostatni............................................................ 594
42. Równość.....................................................................................................595
Równość ekstensjonalna .................................................................................................................. 595
Równość intensjonalna..................................................................................................................... 596
43. Zmiana struktur, wektorów i obiektów................................................601
Ćwiczenia praktyczne z wektorami............................................................................................... 601
Zbiory struktur z cyklami................................................................................................................ 616
Nawracanie ze stanem ..................................................................................................................... 626
Zakończenie ..............................................................................................629
Technika obliczeniowa..................................................................................................................... 629
Programowanie ................................................................................................................................. 630
Krok naprzód..................................................................................................................................... 631
Dodatki 633
Skorowidz..................................................................................................635
8. 17
Przetwarzanie dwóch
skomplikowanych elementów danych
Czasami funkcja pobiera dwa argumenty należące do klas zdefiniowanych za pomocą
skomplikowanych definicji danych. W niektórych przypadkach jeden z argumentów
powinien być traktowany tak, jakby był argumentem atomowym; precyzyjnie sformu-
łowany opis celu zazwyczaj to wyjaśnia. W innych przypadkach oba argumenty muszą
być przetwarzane równolegle. Czasem funkcja będzie musiała brać pod uwagę wszystkie
możliwe przypadki i odpowiednio przetwarzać dane argumenty. Ten rozdział ilustruje
te trzy możliwości za pomocą przykładów i wprowadza rozszerzoną metodę projekto-
wania dla ostatniego przypadku. W ostatnim podrozdziale omawiamy równoważność
danych złożonych i jej związek z procesem testowania; ma to istotne znaczenie dla au-
tomatyzacji testów funkcji.
Jednoczesne przetwarzanie dwóch list. Przypadek 1.
Przeanalizuj następujący kontrakt, opis celu i nagłówek:
;; zastap-empty-lista : lista-liczb lista-liczb -> lista-liczb
;; tworzy nową listę zastępując empty w liście dana-lista-liczb1 listą dana-lista-liczb2
(define (zastap-empty-lista dana-lista-liczb1 dana-lista-liczb2) …)
Kontrakt mówi, że funkcja pobiera dwie listy; z takim zdarzeniem nie spotkaliśmy się
wcześniej. Zobaczmy, jak nasza metoda projektowania sprawdzi się w tym przypadku.
Po pierwsze, tworzymy przykłady. Przypuśćmy, że pierwszą daną wejściową jest
empty. Funkcja zastap-empty-lista powinna w takim przypadku zwrócić drugi argument,
niezależnie od tego, co zawiera:
(zastap-empty-lista empty L)
=L
W powyższym równaniu L reprezentuje dowolną listę liczb. Przypuśćmy teraz, że
pierwszy argument jest różny od empty. Opis celu mówi, że powinniśmy w takim przy-
padku zastąpić empty na końcu listy dana-lista-liczb1 listą dana-lista-liczb2:
9. 236 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
(zastap-empty-lista (cons 1 empty) L)
;; oczekiwana wartość:
(cons 1 L)
(zastap-empty-lista (cons 2 (cons 1 empty)) L)
;; oczekiwana wartość:
(cons 2 (cons 1 L))
(zastap-empty-lista (cons 2 (cons 11 (cons 1 empty))) L)
;; oczekiwana wartość:
(cons 2 (cons 11 (cons 1 L)))
W powyższych przykładach L ponownie reprezentuje dowolną listę liczb.
Przykłady sugerują, że tak długo, jak drugi argument jest listą, nie ma znaczenia, co
on zawiera; w przeciwnym przypadku nie miałoby sensu zastępowanie empty drugim
argumentem. Oznacza to, że mając na uwadze pierwszy argument, powinniśmy wyko-
rzystać szablon dla funkcji przetwarzających listy:
(define (zastap-empty-lista dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) …)
(else … (first dana-lista-liczb1) … (zastap-empty-lista (rest dana-lista-liczb1)
dana-lista-liczb2) … )))
Drugi argument traktujemy na razie tak, jakby był daną atomową.
Wypełnijmy teraz puste miejsca w szablonie zgodnie z zaleceniami metody projekto-
wania. Jeśli lista dana-lista-liczb1 jest pusta, funkcja zastap-empty-lista zwraca dana-lista-liczb2
zgodnie z naszymi przykładami. W drugiej klauzuli wyrażenia cond, odpowiadającej danej
na wejściu niepustej liście dana-lista-liczb1, musimy przeanalizować dostępne wyrażenia:
(1) (first dana-lista-liczb1) wyciąga pierwszy element listy,
(2) (zastap-empty-lista (rest dana-lista-liczb1) dana-lista-liczb2) zamienia empty na liście
(rest dana-lista-liczb1) listą dana-lista-liczb2.
Aby lepiej zrozumieć, co to oznacza, przeanalizuj poniższy przykład:
(zastap-empty-lista (cons 2 (cons 11 (cons 1 empty))) L)
;; oczekiwana wartość:
(cons 2 (cons 11 (cons 1 L)))
Powyżej (first dana-lista-liczb1) wynosi 2, (rest dana-lista-liczb1) ma wartość (cons 11 (cons
1 empty)), zaś (zastap-empty-lista (rest dana-lista-liczb1) dana-lista-liczb2) zwraca wartość
(cons 11 (cons 1 dana-lista-liczb2)). Łącząc liczbę 2 z ostatnią wartością za pomocą in-
strukcji cons, możemy otrzymać pożądany wynik. Ogólnie:
(cons (first dana-lista-liczb1) (zastap-empty-lista (rest dana-lista-liczb1) dana-lista-
liczb2))
jest wynikiem drugiej klauzuli wyrażenia cond. Listing 17.1 zawiera kompletną definicję
funkcji.
10. JEDNOCZESNE PRZETWARZANIE DWÓCH LIST. PRZYPADEK 2. 237
Listing 17.1. Kompletna definicja funkcji zastap-empty-lista
;; zastap-empty-lista : lista-liczb lista-liczb -> lista-liczb
;; tworzy nową listę zastępując empty w liście dana-lista-liczb1 listą dana-lista-liczb2
(define (zastap-empty-lista dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) dana-lista-liczb2)
(else (cons (first dana-lista-liczb1) (zastap-empty-lista (rest dana-lista-liczb1)
dana-lista-liczb2)))))
Ćwiczenia
Ćwiczenie 17.1. W wielu ćwiczeniach używaliśmy operacji append języka Scheme, która
pobiera trzy listy i zestawia ich elementy w jedną listę:
(append (list 'a) (list 'b 'c) (list 'd 'e 'f))
;; oczekiwana wartość:
(list 'a 'b 'c 'd 'e 'f)
Wykorzystaj funkcję zastap-empty-lista do zdefiniowania funkcji nasz-append, która
powinna działać identycznie jak append udostępniany w języku Scheme.
Ćwiczenie 17.2. Opracuj funkcję krzyzuj, która pobierze listę symboli oraz listę liczb
i zwróci wszystkie możliwe pary symboli z liczbami.
Przykład:
(krzyzuj '(a b c) '(1 2))
;; oczekiwana wartość:
(list (list 'a 1) (list 'a 2) (list 'b 1) (list 'b 2) (list 'c 1) (list 'c 2))
Jednoczesne przetwarzanie dwóch list. Przypadek 2.
W rozdziale 10. opracowaliśmy funkcję godziny->wynagrodzenie obliczającą wynagro-
dzenie pracowników na podstawie przepracowanych godzin. Funkcja pobierała listę
liczb (przepracowanych przez pracowników godzin) i zwracała inną listę liczb (należ-
nych wynagrodzeń). Dla uproszczenia założyliśmy, że wszyscy pracownicy mają taką
samą stawkę godzinową. Nawet jednak małe firmy zatrudniają pracowników na zróż-
nicowanych warunkach. Przeważnie księgowy firmy utrzymuje dwa zbiory informacji:
stałą, która między innymi zawiera stawkę godzinową danego pracownika, oraz tym-
czasową, w której zawarta jest informacja o liczbie przepracowanych w ostatnich mie-
siącach godzin.
Nowy, rozszerzony opis problemu oznacza, że funkcja powinna pobierać dwie listy.
Aby uprościć sobie ten problem, załóżmy, że listy zawierają jedynie liczby: jedna —
stawki godzinowe, druga — liczby przepracowanych godzin. Oto nasz kontrakt, opis
celu i nagłówek:
11. 238 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
;; godziny->wynagrodzenia : lista-liczb lista-liczb -> lista-liczb
;; konstruuje nową listę zawierającą iloczyny odpowiednich
;; elementów list dana-lista-liczb1 i dana-lista-liczb2
;; ZAŁOŻENIE: listy mają równą długość
(define (godziny->wynagrodzenia dana-lista-liczb1 dana-lista-liczb2) …)
Możemy traktować listę dana-lista-liczb1 jako listę stawek godzinowych, zaś dana-lista-
liczb2 jako listę przepracowanych w ostatnim miesiącu godzin. Aby otrzymać listę wy-
nagrodzeń, musimy przemnożyć odpowiednie liczby z obu list.
Spójrzmy na kilka przykładów:
(godziny->wynagrodzenia empty empty)
;; oczekiwana wartość:
empty
(godziny->wynagrodzenia (cons 5.65 empty) (cons 40 empty))
;; oczekiwana wartość:
(cons 226.0 empty)
(godziny->wynagrodzenia (cons 5.65 (cons 8.75 empty))
(cons 40.0 (cons 30.0 empty)))
;; oczekiwana wartość:
(cons 226.0 (cons 262.5 empty))
We wszystkich trzech przykładach na wejściu funkcji podano pary list takich samych
długości. Jak napisaliśmy w dodatku do opisu celu, funkcja zakłada, że dane spełniają ten
warunek — i faktycznie, stosowanie funkcji z naruszeniem tego warunku nie ma sensu.
Warunek dotyczący danych wejściowych można wyjaśnić podczas opracowywania
szablonu. Konkretnie, warunek mówi, że (empty? dana-lista-liczb1) ma wartość true wtedy
i tylko wtedy, gdy (empty? dana-lista-liczb2) ma wartość true. Co więcej, (cons? dana-lista-
liczb1) ma wartość true wtedy i tylko wtedy, gdy (cons? dana-lista-liczb2) ma wartość true.
Innymi słowy, warunek upraszcza projekt struktury wyrażeń warunkowych cond w sza-
blonie, ponieważ oznacza, że szablon jest podobny do szablonu dla funkcji przetwarza-
jących listy:
(define (godziny->wynagrodzenia dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) …)
(else … )))
W pierwszej klauzuli cond zarówno dana-lista-liczb1 jak i dana-lista-liczb2 są listami
pustymi — empty. Nie potrzebujemy więc żadnego selektora. W drugiej klauzuli za-
równo dana-lista-liczb1 jak i dana-lista-liczb2 są skonstruowanymi listami, co oznacza, że
potrzebujemy czterech selektorów:
(define (godziny->wynagrodzenia dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) …)
12. JEDNOCZESNE PRZETWARZANIE DWÓCH LIST. PRZYPADEK 2. 239
(else
… (first dana-lista-liczb1) … (first dana-lista-liczb2) …
… (rest dana-lista-liczb1) … (rest dana-lista-liczb2) … )))
Ponieważ ostatnie dwa selektory dotyczą list o identycznych długościach, w oczywisty
sposób możemy je wykorzystać w naturalnej rekursji funkcji godziny->wynagrodzenia:
(define (godziny->wynagrodzenia dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) …)
(else
… (first dana-lista-liczb1) … (first dana-lista-liczb2) …
… (godziny->wynagrodzenia (rest dana-lista-liczb1) (rest dana-lista-liczb2)) … )))
Jedynym niezwykłym elementem tego szablonu jest rekursywne wywołanie funkcji zło-
żone z dwóch wyrażeń, z których oba są selektorami dwóch argumentów funkcji. Jak się
już przekonaliśmy, idea działania funkcji jest łatwa do wytłumaczenia dzięki założeniu,
że dana-lista-liczb1 i dana-lista-liczb2 mają równą długość.
Podczas definiowania funkcji będziemy postępować zgodnie z zaleceniami metody
projektowania. Pierwszy przykład oznacza, że odpowiedzią pierwszej klauzuli wyraże-
nia cond powinna być lista pusta — empty. W drugiej klauzuli mamy do dyspozycji trzy
wartości:
(1) (first dana-lista-liczb1), która reprezentuje pierwszy element listy stawek godzino-
wych;
(2) (first dana-lista-liczb2), która reprezentuje pierwszy element listy przepracowanych
godzin; oraz
(3) (godziny->wynagrodzenia (rest dana-lista-liczb1) (rest dana-lista-liczb2)), która jest listą
wynagrodzeń dla reszt list dana-lista-liczb1 i dana-lista-liczb2.
Aby otrzymać ostateczny wynik, musimy jedynie odpowiednio połączyć te wartości.
A dokładniej, zgodnie z opisem celu musimy obliczyć wynagrodzenie dla pierwszego pra-
cownika i skonstruować listę złożoną z tej wartości i wynagrodzeń pozostałych pracow-
ników. Oznacza to, że odpowiedź dla drugiej klauzuli wyrażenia cond powinna wyglą-
dać następująco:
(cons (wynagrodzenie (first dana-lista-liczb1) (first dana-lista-liczb2))
(godziny->wynagrodzenia (rest dana-lista-liczb1) (rest dana-lista-liczb2)))
Zewnętrzna funkcja wynagrodzenie pobiera dwa pierwsze elementy i oblicza odpowied-
nie wynagrodzenie. Listing 17.2 zawiera kompletne definicje obu funkcji.
Listing 17.2. Kompletna definicja funkcji godziny->wynagrodzenia
;; godziny->wynagrodzenia : lista-liczb lista-liczb -> lista-liczb
;; konstruuje nową listę zawierającą iloczyny odpowiednich
;; elementów list dana-lista-liczb1 i dana-lista-liczb2
;; ZAŁOŻENIE: listy mają równą długość
13. 240 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
(define (godziny->wynagrodzenia dana-lista-liczb1 dana-lista-liczb2)
(cond
((empty? dana-lista-liczb1) empty)
(else (cons (wynagrodzenie (first dana-lista-liczb1) (first dana-lista-liczb2))
(godziny->wynagrodzenia (rest dana-lista-liczb1) (rest dana-lista-liczb2))))))
;; wynagrodzenie : liczba liczba -> liczba
;; oblicza wynagrodzenie na podstawie danych liczb: stawka-godzinowa oraz
przepracowane-godziny
(define (wynagrodzenie stawka-godzinowa przepracowane-godziny)
(∗ stawka-godzinowa przepracowane-godziny))
Ćwiczenia
Ćwiczenie 17.3. W rzeczywistym świecie funkcja godziny->wynagrodzenia pobierałaby li-
stę struktur reprezentujących pracowników i listę struktur reprezentujących przebieg
prac w ostatnim miesiącu. Struktura pracownika zawiera jego nazwisko, numer PESEL
oraz stawkę godzinową. Struktura opisująca przebieg pracy zawiera nazwisko pracow-
nika i liczbę przepracowanych w danym miesiącu godzin. Wynikiem jest lista struktur
zawierających nazwisko pracownika i należne mu wynagrodzenie.
Zmodyfikuj funkcję z listingu 17.2 tak, aby pracowała na powyższych klasach da-
nych. Opracuj potrzebne definicje struktur i definicje danych. Zastosuj metodę projek-
towania w procesie modyfikacji funkcji.
Ćwiczenie 17.4. Opracuj funkcję zepnij, która pobierze listę nazwisk oraz listę numerów
telefonicznych i połączy je w listę podobną do książki telefonicznej. Zakładając, że ma-
my następującą definicję struktury:
(define-struct wpis (nazwisko numer))
pojedynczy wpis w książce telefonicznej konstruujemy za pomocą instrukcji (make-wpis
s n), gdzie s jest symbolem, a n jest liczbą. Załóż, że dane na wejściu listy mają identyczne
długości. Uprość definicję na tyle, na ile będzie to możliwe.
Jednoczesne przetwarzanie dwóch list. Przypadek 3.
Oto trzeci opis problemu przedstawiony w formie kontraktu, opisu celu i nagłówka:
;; wybierz-z-listy : lista-symboli N[>= 1] -> symbol
;; określa n-ty symbol na liście dana-lista-symboli, licząc od 1;
;; sygnalizuje błąd, jeśli na danej liście nie ma n-tego symbolu
(define (wybierz-z-listy dana-lista-symboli n) …)
14. JEDNOCZESNE PRZETWARZANIE DWÓCH LIST. PRZYPADEK 3. 241
Powyższy program wymaga opracowania funkcji, która będzie pobierać liczbę naturalną
i listę symboli. Obie dane wejściowe należą do klas opisanych skomplikowanymi defini-
cjami danych, jednak inaczej niż w dwóch poprzednich problemach, klasy te są całkowi-
cie rozłączne. Na listingu 17.3 przypominamy obie definicje.
Listing 17.3. Definicje danych dla funkcji wybierz-z-listy
Definicje danych:
liczba naturalna [>=1] (N[>=1]) jest albo:
(1) 1, albo
(2) (dodaj1 n), jeśli n należy do N[>=1].
lista-symboli jest albo:
(1) listą pustą, empty, albo
(2) (cons s ls), gdzie s jest symbolem, a ls jest listą symboli.
Ponieważ problem jest nietypowy, powinniśmy upewnić się, że nasze przykłady
obejmują wszystkie ważne przypadki. Ten cel osiągamy zazwyczaj wybierając po jed-
nym przykładzie dla każdej klauzuli z definicji i wybierając losowo elementy dla pozo-
stałych, prostych elementów danych. W tym przykładzie taka procedura prowadzi nas
do wybrania co najmniej dwóch elementów dla danej lista-symboli i dwóch dla N[>= 1].
Wybierzmy empty i (cons 'a empty) dla listy, oraz 1 i 3 dla liczb naturalnych. Po dwa
przykłady dla obu argumentów oznaczają, że będziemy mieli ich łącznie cztery, nie mamy
jednak danego wprost związku pomiędzy tymi dwoma argumentami, ani żadnych ogra-
niczeń wspomnianych w kontrakcie:
(wybierz-z-listy empty 1)
;; oczekiwane zachowanie:
(error 'wybierz-z-listy "…")
(wybierz-z-listy (cons 'a empty) 1)
;; oczekiwana wartość:
'a
(wybierz-z-listy empty 3)
;; oczekiwane zachowanie:
(error 'wybierz-z-listy "…")
(wybierz-z-listy (cons 'a empty) 3)
;; oczekiwane zachowanie:
(error 'wybierz-z-listy "…")
Tylko jeden z czterech wyników jest symbolem; w pozostałych przypadkach otrzymali-
śmy błędy związane z brakiem elementów na danych listach.
15. 242 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Dyskusja o przykładach wykazała, że istnieją faktycznie cztery możliwe, niezależne
przypadki, które musimy brać pod uwagę podczas projektowania funkcji. Możemy ana-
lizować te przypadki za pomocą tabeli zawierającej niezbędne warunki:
(empty? dana-lista-symboli) (cons? dana-lista-symboli)
(= n 1)
(> n 1)
Wiersze tabeli opisują dane wejściowe, dla których funkcja wybierz-z-listy musi określić,
co podano jako listę symboli; w kolumnach rozróżniamy dane liczby naturalne. Co wię-
cej, w tabeli mamy cztery pola, z których każde reprezentuje przypadek, w którym za-
równo warunek odpowiedniej kolumny jak i wiersza ma wartość true. Możemy to wy-
razić za pomocą wyrażeń z operatorem and w odpowiednich komórkach tabeli:
(empty? dana-lista-symboli) (cons? dana-lista-symboli)
(= n 1) (and (= n 1) (empty? dana-lista-symboli)) (and (= n 1) (cons? dana-lista-symboli))
(> n 1) (and (> n 1) (empty? dana-lista-symboli)) (and (> n 1) (cons? dana-lista-symboli))
Łatwo teraz wykazać, że dla dowolnej danej pary argumentów dokładnie jeden z czte-
rech warunków zawartych w komórkach tabeli powyżej i ma wartość true.
Korzystając z naszej analizy przypadków, możemy teraz zaprojektować pierwszą
część szablonu — wyrażenie warunkowe:
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(and (= n 1) (empty? dana-lista-symboli)) …]
[(and (> n 1) (empty? dana-lista-symboli)) …]
[(and (= n 1) (cons? dana-lista-symboli)) …]
[(and (> n 1) (cons? dana-lista-symboli)) …]))
Wyrażenie cond sprawdza wszystkie cztery warunki wyróżniając wszystkie możliwości.
Następnie, jeśli to możliwe, musimy dodać selektory do każdej klauzuli tego wyrażenia:
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(and (= n 1) (empty? dana-lista-symboli))
…]
[(and (> n 1) (empty? dana-lista-symboli))
… (odejmij1 n) …]
[(and (= n 1) (cons? dana-lista-symboli))
… (first dana-lista-symboli) … (rest dana-lista-symboli)…]
[(and (> n 1) (cons? dana-lista-symboli))
… (odejmij1 n) … (first dana-lista-symboli) … (rest dana-lista-symboli) …]))
16. JEDNOCZESNE PRZETWARZANIE DWÓCH LIST. PRZYPADEK 3. 243
Dla liczby naturalnej n szablon zawiera co najwyżej jeden selektor, który określa po-
przednika tej liczby w zbiorze liczb naturalnych. Dla listy dana-lista-symboli możliwe są
maksymalnie dwa selektory. Jednak w przypadku, w którym prawdziwy jest warunek
(= n 1) lub (empty? dana-lista-symboli), czyli jeden z dwóch argumentów jest atomowy,
nie ma potrzeby stosowania odpowiadających tym danym wejściowym selektorów.
Ostatni krok w procesie konstruowania szablonu wymaga wypisania szablonu z za-
znaczonymi rekursjami dla wyrażeń, w których wyrażenia selektorów zwracają dane na-
leżące do tej samej klasy, co dane wejściowe. W szablonie dla funkcji wybierz-z-listy takie
działanie ma sens jedynie dla ostatniej klauzuli cond, która zawiera wyrażenia zarówno
dla N[>= 1], jak i dla listy–symboli. Wszystkie inne klauzule zawierają co najwyżej jedno
odpowiednie wyrażenie. Nie jest jednak do końca jasne, jak sformułować w tym przy-
padku naturalną rekursję. Jeśli zbagatelizujemy cel funkcji i w kroku konstruowania sza-
blonu wypiszemy wszystkie możliwe rekursje, otrzymamy trzy przypadki:
(wybierz-z-listy (rest dana-lista-symboli) (odejmij1 n))
(wybierz-z-listy dana-lista-symboli (odejmij1 n))
(wybierz-z-listy (rest dana-lista-symboli) n)
Ponieważ nie wiemy, ani która rekursja ma w tym przykładzie zastosowanie, ani czy
możemy wykorzystać wszystkie trzy rekursje, przechodzimy do następnego etapu.
Zgodnie z metodą projektowania, przeanalizujmy każdą z klauzul wyrażenia cond
naszego szablonu i znajdźmy prawidłową odpowiedź na powyższe pytanie:
(1) Jeśli warunek (and (= n 1) (empty? dana-lista-symboli)) jest prawdziwy, funkcja wy-
bierz-z-listy powinna wybrać pierwszy element z pustej listy, co jest niemożliwe.
Odpowiedzią funkcji będzie więc sygnalizacja o błędzie.
(2) Jeśli warunek (and (> n 1) (empty? dana-lista-symboli)) jest prawdziwy, funkcja wy-
bierz-z-listy powinna znowu wybrać element z pustej listy. Odpowiedzią jest więc
znowu błąd.
(3) Jeśli warunek (and (= n 1) (cons? dana-lista-symboli)) jest prawdziwy, funkcja wy-
bierz-z-listy powinna zwrócić pierwszy element danej listy. Selektor (first dana-
lista-symboli) przypomina nam, jak uzyskać ten element. Właśnie on będzie odpo-
wiedzią funkcji.
(4) W ostatniej klauzuli, jeśli warunek (and (> n 1) (cons? dana-lista-symboli)) jest praw-
dziwy, musimy przeanalizować, co zwracają poszczególne selektory:
(a) (first dana-lista-symboli) wybiera pierwszy element z listy symboli;
(b) (rest dana-lista-symboli) reprezentuje resztę listy; oraz
(c) (odejmij1 n) zwraca liczbę mniejszą od jeden od danego indeksu listy.
Rozważmy przykład ilustrujący znaczenie powyższych wyrażeń. Przypuśćmy, że
funkcję wybierz-z-listy zastosowano dla listy (cons 'a (cons 'b empty)) i liczby 2:
(wybierz-z-listy (cons 'a (cons 'b empty)) 2)
Funkcja powinna zwrócić symbol 'b, ponieważ (first dana-lista-symboli) zwróci 'a,
natomiast (odejmij1 n) zwróci 1. Poniżej przedstawiamy efekty ewentualnego zasto-
sowania trzech naturalnych rekursji dla tych wartości:
17. 244 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
(a) (wybierz-z-listy (cons 'b empty) 1) zwraca 'b, czyli pożądaną wartość;
(b) (wybierz-z-listy (cons 'a (cons 'b empty)) 1) zwraca wartość 'a, która jest sym-
bolem, ale nie jest oczekiwaną wartością dla naszego problemu;
(c) (wybierz-z-listy (cons 'b empty) 2) sygnalizuje błąd, ponieważ indeks jest więk-
szy niż długość listy.
Powyższa analiza sugeruje, że powinniśmy użyć wyrażenia (wybierz-z-listy (cons 'b
empty) 1) jako odpowiedzi ostatniej klauzuli cond. Oparte na przykładzie rozwią-
zania są jednak często zawodne, powinniśmy więc spróbować zrozumieć, dlaczego
to wyrażenie jest odpowiednie dla naszej funkcji.
Przypomnij sobie, że zgodnie z opisem celu,
(wybierz-z-listy (rest dana-lista-symboli) (odejmij1 n))
wybiera element o indeksie (n-1) z listy (rest dana-lista-liczb). Innymi słowy, zmniejszamy
indeks o 1, skracamy listę o jeden element i szukamy w nowej liście elementu o zmniej-
szonym indeksie. Wyrażenie zwraca wartość zgodną z oczekiwaniami, podobnie jak
odpowiedź klauzuli z warunkiem (= n 1), przy założeniu, że dana-lista-symboli i n są
wartościami złożonymi. Nasz wybór odpowiedzi dla ostatniej klauzuli jest więc całko-
wicie uzasadniony. Kompletną definicję funkcji wybierz-z-listy przedstawia listing 17.4.
Listing 17.4. Kompletna definicja funkcji wybierz-z-listy
;; wybierz-z-listy : lista-symboli N[>= 1] -> symbol
;; określa n-ty symbol na liście dana-lista-symboli, licząc od 1;
;; sygnalizuje błąd, jeśli na danej liście nie ma n-tego symbolu
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(and (= n 1) (empty? dana-lista-symboli)) (error 'wybierz-z-listy "lista jest za
krótka")]
[(and (> n 1) (empty? dana-lista-symboli)) (error 'wybierz-z-listy "lista jest za
krótka")]
[(and (= n 1) (cons? dana-lista-symboli)) (first dana-lista-symboli)]
[(and (> n 1) (cons? dana-lista-symboli)) (wybierz-z-listy (rest dana-lista-symboli)
(odejmij1 n))]))
Ćwiczenia
Ćwiczenie 17.5. Opracuj funkcję wybierz-z-listy0, która wybierze elementy z listy podob-
nie jak wybierz-z-listy, ale począwszy od indeksu 0.
Przykłady:
(symbol=? (wybierz-z-listy0 (list 'a 'b 'c 'd) 3)
'd)
(wybierz-z-listy0 (list 'a 'b 'c 'd) 4)
;; oczekiwane zachowanie:
(error 'wybierz-z-listy0 "lista jest za krótka")
18. UPRASZCZANIE FUNKCJI 245
Upraszczanie funkcji
Funkcja wybierz-z-listy zaprezentowana na listingu 17.4 jest bardziej skomplikowana niż
jest to konieczne. Pierwsza i druga klauzula wyrażenia cond zwracają takie same odpo-
wiedzi: błąd. Innymi słowy, jeśli wyrażenie:
(and (= n 1) (empty? dana-lista-symboli))
lub
(and (> n 1) (empty? dana-lista-symboli))
ma wartość true, efektem działania funkcji jest błąd. Możemy więc wykorzystać to po-
dobieństwo i stworzyć prostsze wyrażenie cond:
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(or (and (= n 1) (empty? dana-lista-symboli))
(and (> n 1) (empty? dana-lista-symboli))) (error 'wybierz-z-listy "lista jest
za krótka")]
[(and (= n 1) (cons? dana-lista-symboli)) (first dana-lista-symboli)]
[(and (> n 1) (cons? dana-lista-symboli)) (wybierz-z-listy (rest dana-lista-symboli)
(odejmij1 n))]))
Nowe wyrażenie jest prostym przełożeniem naszych obserwacji na język Scheme.
Aby jeszcze bardziej uprościć naszą funkcję, musimy zapoznać się z regułą algebra-
iczną dotyczącą wartości logicznych:
(or (and warunek1 dany-warunek)
(and warunek2 dany-warunek))
= (and (or warunek1 warunek2)
dany-warunek)
Powyższe równanie nazywa się prawem de Morgana. Zastosowanie go w naszej funkcji
spowoduje następujące uproszczenie:
(define (wybierz-z-listy n dana-lista-symboli)
(cond
[(and (or (= n 1) (> n 1))
(empty? dana-lista-symboli)) (error 'wybierz-z-listy "lista jest za krótka")]
[(and (= n 1) (cons? dana-lista-symboli)) (first dana-lista-symboli)]
[(and (> n 1) (cons? dana-lista-symboli)) (wybierz-z-listy (rest dana-lista-symboli)
(odejmij1 n))]))
Rozważ teraz pierwszą część warunku (or (= n 1) (> n 1)). Ponieważ n należy do
zbioru N[>= 1], warunek jest zawsze prawdziwy. Gdybyśmy jednak zastąpili go słowem
true, otrzymalibyśmy warunek:
19. 246 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
(and true
(empty? dana-lista-symboli))
który jest równoważny z warunkiem (empty? dana-lista-symboli). Innymi słowy, funkcję
możemy zapisać w następujący sposób:
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(empty? dana-lista-symboli) (error 'wybierz-z-listy "lista jest za krótka")]
[(and (= n 1) (cons? dana-lista-symboli)) (first dana-lista-symboli)]
[(and (> n 1) (cons? dana-lista-symboli)) (wybierz-z-listy (rest dana-lista-symboli)
(odejmij1 n))]))
Ta definicja jest znacznie prostsza niż ta, którą zademonstrowaliśmy na listingu 17.4.
Możemy uprościć naszą definicję jeszcze bardziej. Pierwszy warunek w ostatniej
wersji funkcji wybierz-z-listy odrzuca wszystkie przypadki, w których dana-lista-symboli
jest pusta. Wyrażenie (cons? dana-lista-symboli) w następnych dwóch klauzulach będzie
więc miało zawsze wartość true. Jeśli zastąpimy warunek tą wartością i uprościmy wyra-
żenie and, otrzymamy najprostszą z możliwych wersję funkcji wybierz-z-listy, którą przed-
stawiliśmy na listingu 17.5. Mimo że ostatnia funkcja jest dużo prostsza od oryginalnej,
ważne jest, byśmy rozumieli, że opracowaliśmy obie wersje w sposób systematyczny i tylko
dzięki temu możemy być pewni, że działają one poprawnie. Gdybyśmy próbowali od
początku tworzyć wersję uproszczoną, prędzej czy później popełnilibyśmy błąd.
Listing 17.5. Uproszczona definicja funkcji wybierz-z-listy
;; wybierz-z-listy : lista-symboli N[>= 1] -> symbol
;; określa n-ty symbol na liście dana-lista-symboli, licząc od 1;
;; sygnalizuje błąd, jeśli na danej liście nie ma n-tego symbolu
(define (wybierz-z-listy dana-lista-symboli n)
(cond
[(empty? dana-lista-symboli) (error 'wybierz-z-listy "lista jest za krótka")]
[(= n 1) (first dana-lista-symboli)]
[(> n 1) (wybierz-z-listy (rest dana-lista-symboli) (odejmij1 n))]))
Ćwiczenia
Ćwiczenie 17.6. Opracuj funkcję zastap-empty-lista zgodnie ze strategią z podrozdziału
„Jednoczesne przetwarzanie dwóch list. Przypadek 2.”. Następnie systematycznie uprasz-
czaj definicję funkcji.
Ćwiczenie 17.7. Uprość definicję funkcji wybierz-z-listy0 z ćwiczenia 17.5 lub wyjaśnij,
dlaczego nie można jej uprościć.
20. PROJEKTOWANIE FUNKCJI POBIERAJĄCYCH DWIE ZŁO ONE DANE WEJŚCIOWE 247
Projektowanie funkcji pobierających
dwie złożone dane wejściowe
Napotkamy czasem problemy, które wymagają funkcji pobierających dwie złożone klasy
danych wejściowych. Najbardziej interesujące będą przypadki, w których obie dane będą
miały nieznane rozmiary. Jak się przekonaliśmy w pierwszych trzech podrozdziałach,
możemy postępować z takimi danymi wejściowymi na trzy różne sposoby.
Odpowiednim podejściem do tego typu problemów jest postępowanie zgodne z za-
leceniami metody projektowania. Przede wszystkim musimy przeprowadzić analizę da-
nych i zdefiniować odpowiednie klasy danych. Następnie możemy stworzyć kontrakt, opis
celu funkcji, które kolejno doprowadzają nas do momentu, w którym możemy przejść
do następnego kroku. Zanim to jednak zrobimy, powinniśmy się zastanowić, z którą z na-
stępujących sytuacji mamy do czynienia:
(1) W niektórych przypadkach jeden z parametrów ma rolę dominującą. I odwrotnie,
możemy traktować jeden z parametrów jako atomowy fragment danych z punktu
widzenia opracowywanej funkcji.
(2) W innych przypadkach oba parametry są zsynchronizowane. Muszą obejmować
tę samą klasę wartości o takiej samej strukturze. Np. jeśli mamy dwie listy, to obie
muszą mieć taką samą długość. Jeśli mamy dwie strony WWW, muszą one mieć
taką samą długość i jeśli jedna z nich zawiera osadzoną stronę, druga również
musi zawierać taką stronę. Jeśli decydujemy, że dwa parametry mają taki sam status
i muszą być przetwarzane w sposób zsynchronizowany, możemy wybrać jeden
z nich i zorganizować funkcję wokół niego.
(3) Wreszcie, w rzadkich przypadkach, może nie być oczywistego związku pomiędzy
dwoma parametrami. Dla takich danych wejściowych musimy analizować wszyst-
kie możliwe przypadki, zanim opracujemy przykłady i zaprojektujemy szablon.
Dla pierwszych dwóch przypadków stosujemy istniejącą metodę projektowania. Ostatni
przypadek wymaga dodatkowych uwag.
Po tym, jak zdecydujemy, że funkcja należy do trzeciej kategorii, ale zanim opracu-
jemy przykłady i szablon funkcji, musimy opracować dwuwymiarową tabelę. Oto po-
nownie tabela dla funkcji wybierz-z-listy:
dana-lista-symboli
(empty? dana-lista-symboli) (cons? dana-lista-symboli)
(= n 1)
n
(> n 1)
W kolumnach wyliczamy warunki rozróżniające podklasy pierwszego parametru, w wier-
szach wyliczamy warunki dla drugiego parametru.
Tabela pomaga w opracowaniu zarówno zbioru przykładów dla naszej funkcji, jak
i jej szablonu. Jeśli chodzi o przykłady, muszą one pokrywać wszystkie możliwe przy-
padki. Oznacza to, że musimy opracować przynajmniej po jednym przykładzie dla każ-
dej komórki tabeli.
21. 248 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Jeśli chodzi o szablon, musimy w nim zawrzeć po jednej klauzuli wyrażenia cond
dla każdej komórki. Każda z tych klauzul musi zawierać wszystkie możliwe selektory
dla obu parametrów. Jeśli jeden z nich jest atomowy, nie ma oczywiście potrzeby stoso-
wania selektorów. Wreszcie, zamiast pojedynczej naturalnej rekursji może zaistnieć ko-
nieczność wprowadzenia wielu rekursji. Dla funkcji wybierz-z-listy znaleźliśmy trzy
przypadki. Generalnie wszystkie możliwe kombinacje selektorów są potencjalnymi kan-
dydatami do wykorzystania w naturalnej rekursji. Ponieważ nie możemy wiedzieć, które
z nich są konieczne, a które nie są, wypisujemy je wszystkie i wybieramy te, które będą
odpowiednie dla naszej definicji funkcji.
Podsumowując, projektowanie funkcji dla wielu parametrów opiera się na pewnej
odmianie starej metody projektowania. Kluczowe znaczenie ma przełożenie definicji da-
nych na tabelę demonstrującą wszystkie możliwe i interesujące nas kombinacje. Two-
rzenie przykładów dla funkcji i jej szablonu musi opierać się w jak największym stopniu
właśnie na tej tabeli. Wypełnienie pustych przestrzeni w szablonie wymaga, jak zresztą
wszystkie pozostałe czynności, praktyki.
Ćwiczenia z przetwarzania
dwóch złożonych danych wejściowych
Ćwiczenia
Ćwiczenie 17.8. Opracuj funkcję scalaj, która pobierze dwie listy liczb posortowane ro-
snąco. Wynikiem funkcji będzie pojedyncza, posortowana lista liczb zawierająca wszyst-
kie liczby z obu list (i żadnej innej). Poszczególne liczby powinny występować w liście
wyjściowej tyle razy, ile razy pojawiły się w dwóch listach wejściowych.
Przykłady:
(scalaj (list 1 3 5 7 9) (list 0 2 4 6 8))
;; oczekiwana wartość:
(list 0 1 2 3 4 5 6 7 8 9)
(scalaj (list 1 8 8 11 12) (list 2 3 4 8 13 14))
;; oczekiwana wartość:
(list 1 2 3 4 8 8 8 11 12 13 14)
Ćwiczenie 17.9. Celem tego ćwiczenia jest opracowanie nowej wersji gry w szubienicę
z rozdziału 6. dla słów o dowolnej długości.
Stwórz definicję danych reprezentujących słowa dowolnej długości za pomocą list.
Litera powinna być reprezentowana przez symbole od 'a do 'z oraz symbol '_.
Opracuj funkcję odslon-liste, która pobierze trzy argumenty:
(1) Wybrane słowo, które należy odgadnąć.
(2) Słowo statusu, które określa, jak dużą część słowa odgadliśmy do te pory.
(3) Literę, która reprezentuje naszą aktualną próbę.
22. ĆWICZENIA Z PRZETWARZANIA DWÓCH ZŁO ONYCH DANYCH WEJŚCIOWYCH 249
Funkcja zwróci nowe słowo statusu, które składa się z dowolnych liter i znaków '_. Pola
w nowym słowie statusu określamy porównując próbę z każdą parą liter ze słowa statusu
i wybranego słowa:
(1) Jeśli próba jest równa danej literze w wybranym słowie, wstawiamy tę literę w od-
powiednie miejsce w słowie statusu.
(2) W przeciwnym przypadku nowa litera odpowiada literze ze słowa statusu.
Przetestuj funkcję odslon-liste dla następujących przykładów:
(odslon-liste (list 't 'e 'a) (list '_ 'e '_) 'u)
(odslon-liste (list 'a 'l 'e) (list 'a '_ '_) 'e)
(odslon-liste (list 'a 'l 'l) (list '_ '_ '_) 'l)
Określ — najpierw ręcznie — jakie powinny być rezultaty powyższych wywołań.
Zastosuj pakiet szkoleniowy hangman.ss i funkcje dorysuj-nastepna-czesc (patrz ćwi-
czenie 6.27) oraz odslon-liste, aby rozegrać grę w szubienicę. Oblicz także wartość nastę-
pującego wyrażenia:
(hangman-list odslon-liste dorysuj-nastepna-czesc)
Funkcja hangman-list (udostępniona we wspomnianym pakiecie nauczania) wybiera lo-
sowe słowo i wyświetla okno z menu wyboru liter. Wybierz litery i gdy będziesz gotowy,
kliknij przycisk Check, aby sprawdzić, czy Twój strzał był trafny. Powodzenia!
Ćwiczenie 17.10. Robotnicy w fabryce podbijają swoje karty czasowe rano, gdy przy-
chodzą do pracy, i po południu — gdy wychodzą. Obecnie stosuje się elektroniczne karty
zawierające numer pracownika i liczbę przepracowanych godzin. Ponadto akta pracow-
nika zawierają zawsze jego nazwisko, numer i stawkę godzinową.
Opracuj funkcję godziny->wynagrodzenia2, która pobierze listę akt pracowniczych oraz
listę (elektronicznych) kart. Funkcja będzie obliczać miesięczne wynagrodzenie każdego
pracownika odpowiednio dopasowując, na podstawie numeru pracownika, dane z jego
akt z danymi zapisanymi na karcie. Jeśli zabraknie danej pary lub numery pracowników
nie będą się zgadzać, funkcja zatrzyma się z odpowiednim komunikatem o błędzie. Załóż,
że istnieje co najwyżej jedna karta dla jednego pracownika i dla odpowiadającemu mu
numeru.
Wskazówka: Księgowy posortowałby najpierw obie listy według numerów pracowników.
Ćwiczenie 17.11. Kombinacja liniowa jest sumą kilku składników liniowych, co oznacza,
że zwraca zmienne i liczby. Te drugie nazywamy w tym kontekście współczynnikami.
Oto kilka przykładów:
5∗x
5 ∗ x + 17 ∗ y
5 ∗ x + 17 ∗ y + 3 ∗ z
We wszystkich trzech przykładach współczynnikiem przy x jest 5, przy y jest liczba 17,
a jedynym przy z jest 3.
23. 250 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Jeśli mamy dane wartości zmiennych, możemy określić wartość wielomianu. Np. je-
śli x = 10, wartością iloczynu 5 ∗ x będzie 50; jeśli x = 10 i y = 1, wielomian 5 ∗ x + 17 ∗ y
przyjmie wartość 67; jeśli zaś x = 10, y = 1 i z = 2, wyrażenie 5 ∗ x + 17 ∗ y + 3 ∗ z będzie
miało wartość 73.
W przeszłości opracowalibyśmy funkcje obliczające wartości liniowych kombinacji
dla poszczególnych wartości. Alternatywną reprezentacją takich wielomianów jest lista
współczynników. Powyższe kombinacje byłyby reprezentowane przez takie listy:
(list 5)
(list 5 17)
(list 5 17 3)
Powyższa reprezentacja zakłada, że zgadzamy się zawsze używać zmiennych w okre-
ślonej kolejności.
Opracuj funkcję wartosc, która pobierze reprezentację wielomianu (lista współczyn-
ników) oraz listę liczb (wartości zmiennych). Obie listy mają tę samą długość. Funkcja
powinna zwrócić wartość tego wielomianu dla danych wartości zmiennych.
Ćwiczenie 17.12. Ewa, Joanna, Dorota i Maria są siostrami, które chciałyby zaoszczędzić
pieniądze i ograniczyć wysiłek związany z kupowaniem prezentów gwiazdkowych. Po-
stanowiły więc przeprowadzić losowanie, które przypisze każdej z nich jedną osobę, która
następnie zostanie obdarowana prezentem. Ponieważ Joanna jest programistą kompute-
rowym, siostry poprosiły ją o napisanie programu, który przeprowadzi losowanie w spo-
sób bezstronny. Program nie może oczywiście przypisać żadnej siostrze jej samej jako
odbiorcy prezentu.
Oto definicja funkcji wybierz-prezent, która pobiera listę różnych imion (symboli) i wy-
biera losowo jeden z układów listy, w którym żaden z elementów nie pozostał na swoim
miejscu:
;; wybierz-prezent: lista-imion -> lista-imion
;; wybiera "losowy", inny niż oryginalny układ imion
(define (wybierz-prezent imiona)
(wybierz-losowo
(nie-takie-same imiona (uklady imiona))))
Przypomnij sobie podobną funkcję z ćwiczenia 12.6, która pobierała listę symboli i zwra-
cała listę wszystkich możliwych układów złożonych z elementów tej listy.
Opracuj zewnętrzne funkcje:
(1) wybierz-losowo : lista-list-imion -> lista-imion, która pobierze listę elementów i loso-
wo wybierze jeden z nich;
(2) nie-takie-same : lista-imion lista-list-imion -> lista-list-imion, która pobierze listę imion
L oraz listę układów i zwróci listę takich układów, w których żadne imię nie wy-
stępuje na takiej samej pozycji co w danej liście imion.
Dwie permutacje są ze sobą zgodne na pewnej pozycji, jeśli możemy pobrać to
samo imię z obu list za pomocą słowa first lub takiej samej liczby słów rest. Np. li-
sty (list 'a 'b 'c) oraz (list 'c 'a 'b) nie są ze sobą zgodne; natomiast listy (list 'a 'b 'c)
i (list 'c 'b 'a) zgadzają się ze sobą na drugiej pozycji. Możemy to udowodnić sto-
sując dla obu list operację rest poprzedzającą first.
24. ROZSZERZONE ĆWICZENIE: OBLICZANIE WYRA EŃ JĘZYKA SCHEME. CZĘŚĆ 2. 251
Postępuj ostrożnie i zgodnie z odpowiednią metodą projektowania dla każdej klauzuli.
Wskazówka: Przypomnij sobie, że funkcja (random n) wybiera losową liczbę od 0 do n
(patrz także ćwiczenie 11.5).
Ćwiczenie 17.13. Opracuj funkcję prefiksDNA. Funkcja pobierze dwa argumenty będące
listami symboli (w DNA występują jedynie 'a, 'c, 'g oraz 't, ale możemy to ograniczenie
na razie pominąć). Pierwsza lista nazywana jest wzorcem, druga szukanym łańcuchem.
Funkcja zwraca wartość true, jeśli wzorzec jest prefiksem szukanego łańcucha. We wszyst-
kich innych przypadkach funkcja powinna zwrócić wartość false.
Przykłady:
(PrefiksDNA (list 'a 't) (list 'a 't 'c))
(not (PrefiksDNA (list 'a 't) (list 'a)))
(PrefiksDNA (list 'a 't) (list 'a 't))
(not (PrefiksDNA (list 'a 'c 'g 't) (list 'a 'g)))
(not (PrefiksDNA (list 'a 'a 'c 'c) (list 'a 'c)))
Jeśli to możliwe, uprość funkcję PrefiksDNA.
Zmodyfikuj funkcję tak, aby zwracała pierwszy element szukanego łańcucha, który
nie znalazł się we wzorcu, jeśli oczywiście wzorzec jest prawidłowym prefiksem szuka-
nego łańcucha. Jeśli listy do siebie nie pasują lub wzorzec jest dłuższy od szukanego łań-
cucha, zmodyfikowana funkcja powinna nadal zwracać false. Jeśli listy są tej samej dłu-
gości i pasują do siebie, wynikiem powinno być nadal true.
Przykłady:
(symbol=? (PrefiksDNA (list 'a 't) (list 'a 't 'c))
'c)
(not (PrefiksDNA (list 'a 't) (list 'a)))
(PrefiksDNA (list 'a 't) (list 'a 't))
Czy ten wariant funkcji PrefiksDNA może być uproszczony? Jeśli tak, zrób to. Jeśli nie,
wyjaśnij dlaczego.
Rozszerzone ćwiczenie:
obliczanie wyrażeń języka Scheme. Część 2.
Celem tego podrozdziału jest rozszerzenie możliwości programu stworzonego w roz-
dziale 14. (podrozdział „Rozszerzone ćwiczenie: obliczanie wyrażeń języka Scheme”) tak,
by mógł radzić sobie z wywołaniami i definicjami funkcji. Innymi słowy, nowy program
powinien symulować, co stałoby się w środowisku DrScheme, gdybyśmy wpisali dane
wyrażenie w oknie Interactions i kliknęli przycisk Execute. Aby uprościć sobie zadanie,
zakładamy, że wszystkie funkcje zdefiniowane w oknie Definitions pobierają po jednym
argumencie.
25. 252 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Ćwiczenia
Ćwiczenie 17.14. Rozszerz definicję danych z ćwiczenia 14.17 tak, aby było możliwe re-
prezentowanie wywołań funkcji w wyrażeniach. Wywołanie powinno być reprezento-
wane jako struktura z dwoma polami. Pierwsze pole zawiera nazwę funkcji, drugie —
jedną reprezentację wyrażenia będącego argumentem funkcji.
Kompletny program obliczający wartości wyrażeń powinien obsługiwać także defi-
nicje funkcji.
Ćwiczenie 17.15. Opracuj definicję struktury i definicję danych dla definicji funkcji.
Przypomnij sobie, że definicja funkcji zawiera trzy istotne atrybuty:
(1) Nazwę funkcji.
(2) Nazwę parametru.
(3) Ciało funkcji.
Taka charakterystyka funkcji sugeruje wprowadzenie struktury z trzema polami. Pierw-
sze dwa zawierają symbole, ostatni reprezentuje ciało funkcji, które jest wyrażeniem.
Przełóż następujące definicje na wartości w języku Scheme:
(define (f x) (+ 3 x))
(define (g x) (∗ 3 x))
(define (h u) (f (∗ 2 u)))
(define (i v) (+ (∗ v v) (∗ v v)))
(define (k w) (∗ (h w) (i w)))
Opracuj więcej przykładów i podobnie przełóż je na naszą reprezentację.
Ćwiczenie 17.16. Opracuj funkcję interpretuj-z-jedna-definicja. Funkcja pobierze repre-
zentację wyrażenia Scheme i reprezentację definicji funkcji — P.
Pozostałe wyrażenia z ćwiczenia 14.17 powinny być interpretowane jak wcześniej.
W przypadku pojawienia się reprezentacji zmiennej w wyrażeniu funkcja interpretuj-z-
jedna-definicja powinna zasygnalizować błąd. Dla wywołania funkcji P w wyrażeniu funk-
cja interpretuj-z-jedna-definicja powinna:
(1) obliczyć wartość argumentu;
(2) zastąpić wszystkie wystąpienia parametru funkcji P w jej ciele wartością obliczo-
nego w poprzednim kroku argumentu; oraz
(3) obliczyć nowe wyrażenie za pomocą rekursji. Oto szkic takiego działania:1
(oblicz-z-jedna-definicja (zastąp … … …)
dana-definicja-funkcji)
Dla wszystkich innych wywołań funkcja interpretuj-z-jedna-definicja powinna sygnalizo-
wać błąd.
1
Omówimy szczegółowo tę formę rekursji w części V.
26. RÓWNOŚĆ I TESTOWANIE 253
Ćwiczenie 17.17. Opracuj funkcję interpretuj-z-definicjami. Funkcja pobierze reprezentację
wyrażenia Scheme i listę reprezentacji definicji funkcji — definicje. Funkcja powinna
zwrócić liczbę, jaką środowisko DrScheme wyświetliłoby w oknie Interactions, gdybyśmy
wpisali wyrażenie reprezentowane przez pierwszy parametr w tym oknie, zaś okno De-
finitions zawierałoby, reprezentowane przez drugi parametr, definicje funkcji.
Pozostałe wyrażenia z ćwiczenia 14.17 powinny być interpretowane jak wcześniej.
Dla wywołania funkcji P w wyrażeniu funkcja interpretuj-z-definicjami powinna:
(1) obliczyć wartość argumentu;
(2) znaleźć definicję odpowiedniej funkcji na liście definicje;
(3) zastąpić wszystkie wystąpienia parametru funkcji P w jej ciele wartością obliczo-
nego w pierwszym kroku argumentu; oraz
(4) obliczyć nowe wyrażenie za pomocą rekursji.
Podobnie jak DrScheme, funkcja interpretuj-z-definicjami sygnalizuje błąd w przypadku
wywołania funkcji, której nazwy nie ma na liście, oraz w przypadku odwołania się do
reprezentacji zmiennej w wyrażeniu.
Równość i testowanie
Wiele opracowanych przez nas funkcji zwraca listy. Kiedy je testujemy, musimy porów-
nywać dwie listy: wyniki zwracane przez funkcje z przewidywanymi wartościami. Po-
równywanie list ręcznie jest nudne i nie daje pewności, że nie popełniliśmy błędu.
Opracujmy funkcję, która pobiera dwie listy liczb i określa, czy są sobie równe:
;; lista=? : lista-liczb lista-liczb -> boolean
;; określa, czy dana-lista i inna-lista
;; zawierają te same liczby w tym samym porządku
(define (lista=? dana-lista inna-lista) …)
Opis celu ulepsza ogólne przeznaczenie funkcji i przypomina nam, że o ile klienci mogą
uważać dwie listy za równe, jeśli zawierają te same elementy, niezależnie od kolejności,
to programiści są bardziej dokładni i włączają kolejność elementów jako element porów-
nania. Kontrakt i opis celu pokazują także, że lista=? jest funkcją przetwarzającą dwie
skomplikowane wartości — i w rzeczywistości to nas najbardziej interesuje.
Porównywanie dwóch list oznacza, że musimy przejrzeć wszystkie elementy obu list.
Eliminuje to możliwość projektowania funkcji lista=? linia po linii, jak w przypadku funkcji
zastap-empty-lista z podrozdziału „Jednoczesne przetwarzanie dwóch list. Przypadek 1.”.
Na pierwszy rzut oka nie istnieje żaden związek pomiędzy dwiema listami wejściowymi,
co sugeruje, że powinniśmy wykorzystać zmodyfikowaną metodę projektowania.
Zacznijmy więc od tabeli:
(empty? dana-lista) (cons? dana-lista)
(empty? inna-lista)
(cons? inna-lista)
27. 254 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Tabela ma cztery komórki do wypełnienia, co oznacza, że potrzebujemy (przynajmniej)
czterech testów i czterech klauzul wyrażenia cond w szablonie.
Oto pięć testów:
(lista=? empty empty)
(not
(lista=? empty (cons 1 empty)))
(not
(lista=? (cons 1 empty) empty))
(lista=? (cons 1 (cons 2 (cons 3 empty)))
(cons 1 (cons 2 (cons 3 empty))))
(not
(lista=? (cons 1 (cons 2 (cons 3 empty)))
(cons 1 (cons 3 empty))))
Drugi i trzeci pokazują, że lista=? musi obsługiwać swoje argumenty symetrycznie. Dwa
ostatnie testy pokazują natomiast, dla jakich danych wejściowych funkcja lista=? powinna
zwracać true lub false.
Trzy z czterech klauzul cond zawierają selektory, natomiast jedna z nich zawiera
naturalne rekursje:
(define (lista=? dana-lista inna-lista)
(cond
[(and (empty? dana-lista) (empty? inna-lista)) …]
[(and (cons? dana-lista) (empty? inna-lista))
… (first dana-lista) … (rest dana-lista) …]
[(and (empty? dana-lista) (cons? inna-lista))
… (first inna-lista) … (rest inna-lista) …]
[(and (cons? dana-lista) (cons? inna-lista))
… (first dana-lista) … (first inna-lista) …
… (lista=? (rest dana-lista) (rest inna-lista)) …
… (lista=? dana-lista (rest inna-lista)) …
… (lista=? (rest dana-lista) inna-lista) …]))
W czwartej klauzuli mamy trzy naturalne rekursje, ponieważ możemy połączyć parami
dwa selektory oraz możemy połączyć w pary każdy parametr z jednym selektorem.
Od powyższego szablonu do kompletnej definicji dzieli nas jedynie niewielki krok.
Dwie listy mogą zawierać te same elementy tylko wtedy, gdy obie są puste lub skon-
struowane za pomocą instrukcji cons. Ten warunek natychmiast sugeruje wartość true
jako odpowiedź dla pierwszej klauzuli oraz false dla dwóch następnych. W ostatniej
klauzuli mamy dwie liczby będące pierwszymi elementami obu list oraz trzy naturalne
rekursje. Musimy porównać te dwie liczby. Co więcej, wyrażenie (lista=? (rest dana-lista)
(rest inna-lista)) oblicza, czy reszty obu list są identyczne. Dwie listy są sobie równe wte-
dy i tylko wtedy, gdy spełnione są oba warunki, co oznacza, że musimy je połączyć za
pomocą operatora logicznego and:
28. RÓWNOŚĆ I TESTOWANIE 255
(define (lista=? dana-lista inna-lista)
(cond
[(and (empty? dana-lista) (empty? inna-lista)) true]
[(and (cons? dana-lista) (empty? inna-lista)) false]
[(and (empty? dana-lista) (cons? inna-lista)) false]
[(and (cons? dana-lista) (cons? inna-lista))
(and (= (first dana-lista) (first inna-lista))
(lista=? (rest dana-lista) (rest inna-lista)))]))
Dwie pozostałe naturalne rekursje nie odgrywają dla naszego rozwiązania żadnej roli.
Spójrzmy po raz drugi na związki pomiędzy dwoma parametrami. Pierwszy spo-
sób, w jaki rozwiązaliśmy problem porównywania list, sugeruje, że jeśli dwie listy mają
być sobie równe, to drugi parametr musi mieć identyczny kształt jak pierwszy. Inaczej
mówiąc, moglibyśmy opracować funkcję opartą na strukturze pierwszego parametru
i sprawdzającą w razie potrzeby strukturę innego parametru.
Pierwszy parametr jest listą liczb, możemy więc ponownie wykorzystać szablon
funkcji przetwarzających listy:
(define (lista=? dana-lista inna-lista)
(cond
[(empty? dana-lista) …]
[(cons? dana-lista)
… (first dana-lista) … (first inna-lista) …
… (lista=? (rest dana-lista) (rest inna-lista)) …]))
Jedyną różnicą jest to, że druga klauzula przetwarza drugi parametr w taki sam sposób
jak pierwszy. Takie rozwiązanie bardzo przypomina funkcję godziny->wynagrodzenia z pod-
rozdziału „Jednoczesne przetwarzanie dwóch list. Przypadek 2.”.
Wypełnienie wolnych przestrzeni w szablonie jest trudniejsze niż w pierwszej próbie
rozwiązania tego problemu. Jeśli dana-lista jest pusta, odpowiedź zależy od drugiej danej
wejściowej: inna-lista. Jak pokazują przykłady, odpowiedzią będzie w tym przypadku true
wtedy i tylko wtedy, gdy inna-lista również będzie listą pustą. Przekładając to na język
Scheme, otrzymamy następującą odpowiedź dla pierwszej klauzuli: (empty? inna-lista).
Jeśli dana-lista nie jest pusta, szablon sugeruje, że powinniśmy obliczyć odpowiedź
funkcji na podstawie:
(1) (first dana-lista), pierwsza liczba na liście dana-lista;
(2) (first inna-lista), pierwsza liczba na liście inna-lista;
(3) (lista=? (rest dana-lista) (rest inna-lista)), wyrażenie, które określa, czy reszty obu
list są sobie równe.
Mając dany opis celu funkcji i przykłady jej działania, możemy po prostu porównać
elementy (first dana-lista) oraz (first inna-lista) i połączyć wynik z naturalną rekursją za
pomocą operacji and:
(and (= (first dana-lista) (first inna-lista))
(lista=? (rest dana-lista) (rest inna-lista)))
29. 256 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Mimo że wykonany przez nas krok wygląda na prosty, jego efektem jest niepoprawna
definicja. Celem wypisania warunków w wyrażeniu cond jest upewnienie się, że wszyst-
kie selektory są poprawne.
Żaden element w specyfikacji funkcji lista=? nie sugeruje jednak, że inna-lista jest
skonstruowana za pomocą instrukcji cons, jeśli dana-lista jest skonstruowana za pomocą
tej samej instrukcji.
Możemy poradzić sobie z tym problemem za pomocą dodatkowego warunku:
(define (lista=? dana-lista inna-lista)
(cond
[(empty? dana-lista) (empty? inna-lista)]
[(cons? dana-lista)
(and (cons? inna-lista)
(and (= (first dana-lista) (first inna-lista))
(lista=? (rest dana-lista) (rest inna-lista))))]))
Dodatkowym warunkiem jest (cons? inna-lista), co oznacza, że lista=? zwróci false, jeśli
warunek (cons? dana-lista) będzie prawdziwy oraz (cons? inna-lista) będzie fałszywy. Jak
pokazują przykłady, taki właśnie powinien być pożądany efekt.
Podsumowując, funkcja lista=? pokazuje, że czasami możemy zastosować więcej niż
jedną metodę projektowania w celu opracowania danej funkcji. Efekty prac są różne,
mimo że są ze sobą blisko powiązane; faktycznie, moglibyśmy udowodnić, że obie funk-
cje zwracają zawsze takie same wyniki dla tych samych danych wejściowych. Podczas
drugiego procesu tworzenia funkcji wykorzystaliśmy także spostrzeżenia z pierwszej
próby.
Ćwiczenia
Ćwiczenia 17.18. Przetestuj obie wersje funkcji lista=?.
Ćwiczenie 17.19. Uprość pierwszą wersję funkcji lista=?. Oznacza to, że powinieneś po-
łączyć sąsiadujące klauzule wyrażenia cond, które zwracają takie same wyniki, łącząc
ich warunki za pomocą operatora or. Jeśli to konieczne, poprzestawiaj klauzule i użyj
słowa else w ostatniej klauzuli w ostatecznej wersji funkcji.
Ćwiczenie 17.20. Opracuj funkcję sym-lista=?. Funkcja określi, czy dwie listy symboli są
sobie równe.
Ćwiczenie 17.21. Opracuj funkcję zawiera-te-same-liczby, która określi, czy dwie listy liczb
zawierają te same liczby, niezależnie od ich kolejności. Np. wyrażenie:
(zawiera-te-same-liczby (list 1 2 3) (list 3 2 1))
zwróci wartość true.
Ćwiczenie 17.22. Klasy liczb, symboli i wartości logicznych nazywamy czasami atomami:2
2
Niektórzy włączają do tej klasy także wartość empty i pojedyncze znaki.
30. RÓWNOŚĆ I TESTOWANIE 257
atom jest albo:
(1) liczbą;
(2) wartością logiczną (boolean);
(3) symbolem.
Opracuj funkcję rowne-listy?, która pobierze dwie listy atomów i określi, czy są sobie
równe.
Porównanie obu wersji funkcji lista=? sugeruje, że druga wersja jest łatwiejsza do
zrozumienia od pierwszej. Stwierdzamy w niej, że dwie złożone wartości są sobie równe,
jeśli druga jest stworzona za pomocą tego samego konstruktora co pierwsza oraz jeśli ele-
menty wykorzystane w tym konstruktorze są takie same. Ten pomysł można wykorzy-
stać podczas opracowywania innych funkcji porównujących ze sobą dane wejściowe.
Aby potwierdzić nasze przypuszczenie, spójrzmy na funkcję porównującą strony
WWW:
;; www=? : strona-www strona-www -> boolean
;; określa, czy dana-strona i inna-strona mają taki sam kształt drzewa
;; i zawierają te same symbole ułożone w tym samym porządku
(define (www=? dana-strona inna-strona) …)
Przypomnij sobie definicję dla prostych stron WWW:
strona-WWW (w skrócie SW) jest albo:
(1) empty;
(2) (cons s sw), gdzie s jest symbolem, zaś sw jest stroną WWW;
(3) (cons esw sw), gdzie esw i sw są stronami WWW.
Definicja danych zawiera trzy klauzule, co oznacza, że jeśli chcielibyśmy opracować funk-
cję www=? zgodnie ze zmodyfikowaną metodą projektowania, musielibyśmy przestu-
diować dziewięć przypadków. Wykorzystując zamiast tego doświadczenie zdobyte pod-
czas tworzenia funkcji lista=?, możemy rozpocząć pracę od prostego szablonu dla stron
WWW:
(define (www=? dana-strona inna-strona)
(cond
[(empty? dana-strona) …]
[(symbol? (first dana-strona))
… (first dana-strona) … (first inna-strona) …
… (www=? (rest dana-strona) (rest inna-strona)) …]
[else
… (www=? (first dana-strona) (first inna-strona)) …
… (www=? (rest dana-strona) (rest inna-strona)) …]))
31. 258 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
W drugiej klauzuli wyrażenia cond ponownie musimy postępować podobnie jak w przy-
padku funkcji godziny->wynagrodzenia i lista=?. Oznacza to, że mówimy, iż inna-strona
musi mieć taki sam kształt co dana-strona, jeśli ma być identyczna i mamy przetwarzać obie
strony w analogiczny sposób. Rozumowanie dla drugiej klauzuli jest podobne.
W miarę ulepszania powyższego szablonu musimy znowu dodać warunki związane
z parametrem inna-strona, aby upewnić się, że odpowiednie selektory będą działać po-
prawnie:
(define (www=? dana-strona inna-strona)
(cond
[(empty? dana-strona) (empty? inna-strona)]
[(symbol? (first dana-strona))
(and (and (cons? inna-strona) (symbol? (first inna-strona)))
(and (symbol=? (first dana-strona) (first inna-strona))
(www=? (rest dana-strona) (rest inna-strona))))]
[else
(and (and (cons? inna-strona) (list? (first inna-strona)))
(and (www=? (first dana-strona) (first inna-strona))
(www=? (rest dana-strona) (rest inna-strona))))]))
Musimy zwłaszcza upewnić się w drugiej i trzeciej klauzuli, że inna-strona jest skonstru-
owaną listą, oraz że jej pierwszy element jest symbolem lub listą. W przeciwnym przy-
padku funkcja byłaby analogiczna z funkcją lista=? i działałaby w identyczny sposób.
Ćwiczenia
Ćwiczenie 17.23. Narysuj tabelę opartą na definicji danych dla prostej strony WWW.
Opracuj przynajmniej po jednym przykładzie dla każdego z dziewięciu przypadków.
Przetestuj funkcję www=? dla tych przykładów.
Ćwiczenie 17.24. Opracuj funkcję posn=?, która pobiera dwie struktury posn i określa,
czy są identyczne.
Ćwiczenie 17.25. Opracuj funkcję drzewo=?, która pobierze dwa drzewa binarne i określi,
czy są identyczne.
Ćwiczenie 17.26. Przeanalizuj poniższe dwie wzajemnie rekursywne definicje danych:
s-lista jest albo:
(1) listą pustą, empty, albo
(2) (cons s sl), gdzie s jest s-wyr, zaś sl jest listą s-lista.
s-wyr jest albo:
(1) liczbą,
(2) wartością logiczną,
(3) symbolem,
(4) listą s-lista.
32. RÓWNOŚĆ I TESTOWANIE 259
Opracuj funkcję s-lista=?, która pobiera dwie listy s-lista i określa, czy są identyczne. Po-
dobnie jak w przypadku list liczb, dwie listy zgodne z definicją klasy s-lista są sobie
równe, jeśli zawierają te same elementy na analogicznych pozycjach.
Skoro przeanalizowaliśmy już problem równości pewnych wartości, możemy wró-
cić do oryginalnego źródła rozważań w tym rozdziale: funkcji testujących. Przypuśćmy,
że chcemy przetestować funkcję godziny->wynagrodzenia z podrozdziału „Jednoczesne
przetwarzanie dwóch list. Przypadek 2.”:
(godziny->wynagrodzenia (cons 5.65 (cons 8.75 empty))
(cons 40 (cons 30 empty)))
= (cons 226.0 (cons 262.5 empty))
Jeśli po prostu wpiszemy wywołanie tej funkcji w oknie Interactions lub dodamy je na
końcu okna Definitions, musimy ręcznie porównać otrzymany wynik z przewidywaną
wartością. Dla krótkich list, podobnych do powyższej, jest to możliwe; dla długich list,
głębokich stron WWW lub innych dużych danych złożonych ręczne porównywanie mo-
że być źródłem błędów.
Korzystając z funkcji porównujących podobnych do lista=?, możemy znacznie zre-
dukować konieczność ręcznego porównywania wyników testów. W naszym obecnym
przypadku możemy dodać następujące wyrażenie:
(lista=?
(godziny->wynagrodzenia (cons 5.65 (cons 8.75 empty))
(cons 40 (cons 30 empty)))
(cons 226.0 (cons 262.5 empty)))
na końcu okna Definitions. Jeśli klikniemy teraz przycisk Execute, musimy tylko odczytać
w oknie Interactions, czy wszystkie podobne testy zwróciły wartość true.
W rzeczywistości możemy iść jeszcze dalej. Możemy napisać funkcję testującą po-
dobną do tej z listingu 17.6. Klasa wynik-testow składa się z wartości i listy czterech ele-
mentów: łańcucha "złe wyniki testów:" i trzech list. Korzystając z naszej nowej zewnętrz-
nej funkcji, możemy przetestować godziny->wynagrodzenia w sposób następujący:
(testuj-godziny->wynagrodzenia
(cons 5.65 (cons 8.75 empty))
(cons 40 (cons 30 empty))
(cons 226.0 (cons 262.5 empty)))
Listing 17.6. Funkcja testująca
;; testuj-godziny->wynagrodzenia : lista-liczb lista-liczb lista-liczb -> wynik-testow
;; testuje funkcję godziny->wynagrodzenia
(define (testuj-godziny->wynagrodzenia dana-lista inna-lista oczekiwany-wynik)
(cond
[(lista=? (godziny->wynagrodzenia dana-lista inna-lista) oczekiwany-wynik)
true]
[else
(list "złe wyniki testów:" dana-lista inna-lista oczekiwany-wynik)]))
33. 260 17. PRZETWARZANIE DWÓCH SKOMPLIKOWANYCH ELEMENTÓW DANYCH
Jeśli coś nie zadziała poprawnie w naszych testach, wspomniana czteroelementowa lista
określi dokładnie, w którym przypadku wynik różni się od oczekiwanego.
Testowanie za pomocą równości? Twórcy języka Scheme przewidzieli konieczność sto-
sowania ogólnej funkcji porównującej dane i udostępnili ją:
;; equal? : dowolna-wartosc dowolna-wartosc -> boolean
;; określa, czy dwie wartości są strukturalnie identyczne
;; i zawierają te same wartości atomowe na analogicznych pozycjach
Jeśli stosujemy equal? dla dwóch list, funkcja porównuje je w taki sam sposób, jak robiła
to funkcja lista=?; kiedy dajemy na wejściu funkcji equal? parę struktur, to funkcja po-
równuje kolejno odpowiednie pola, jeśli obie dane należą do tego samego typu struktur;
jeśli natomiast uruchomimy funkcję equal? dla dwóch danych atomowych, dane te zo-
staną porównane za pomocą =, symbol=? lub boolean=?, w zależności od ich typu.
Wskazówka dotycząca testowania
Używaj funkcji equal? w procesie testowania (jeśli konieczne jest porównywanie
wartości).
Nieposortowane listy: W niektórych przypadkach stosujemy listy, mimo że porządek
elementów nie gra roli. Ważne jest wówczas posiadanie takich funkcji, jak zawiera-te-
same-liczby (patrz ćwiczenie 17.21), jeśli chcemy określić, czy wyniki wywołania jakiejś
funkcji zawierają odpowiednie elementy.
Ćwiczenia
Ćwiczenie 17.27. Zdefiniuj, za pomocą funkcji equal?, funkcję testującą funkcję zastap-
empty-lista z podrozdziału „Jednoczesne przetwarzanie dwóch list. Przypadek 1.”. Sfor-
mułuj także przykłady będące przypadkami testowymi w tej funkcji.
Ćwiczenie 17.28. Zdefiniuj funkcję testuj-wybierz-z-listy, która będzie zarządzać przy-
padkami testowymi dla funkcji wybierz-z-listy z podrozdziału „Jednoczesne przetwarza-
nie dwóch list. Przypadek 1.”. Sformułuj przykłady z rozdziału jako przypadki testowe
dla funkcji testuj-wybierz-z-listy.
Ćwiczenie 17.29. Zdefiniuj funkcję testuj-interpretuj, która będzie przeprowadzać testy
funkcji interpretuj-z-definicjami za pomocą funkcji equal?. Sformułuj ponownie przypadki
testowe za pomocą nowej funkcji.