C. Rusz głową! - ebook
C. Rusz głową! - ebook
W obecnych czasach triumfy święcą platforma .NET, Java oraz HTML5 i JavaScript. Mogłoby się wydawać, że język C i inne podobne języki odeszły w niepamięć. Nic bardziej mylnego! W dalszym ciągu są one niezastąpione w wielu dziedzinach. Znajdują zastosowanie wszędzie tam, gdzie wymagana jest pełna kontrola nad sprzętem oraz gwarancja czasu wykonania powierzonych zadań. Dlatego specjaliści znający ten język wciąż są poszukiwani na rynku pracy.
Dzięki tej książce możesz dołączyć do ich grona! Kolejne wydanie z serii "Rusz głową" to gwarancja sukcesu. Zastosowanie nowatorskich technik nauki pozwala na błyskawiczne przyswojenie wiedzy. W trakcie lektury poznasz składnię języka C, dostępne typy zmiennych, sposoby zarządzania pamięcią oraz zasady tworzenia przejrzystego kodu. Ponadto nauczysz się biegle obsługiwać kompilator, korzystać z plików nagłówkowych oraz przesyłać komunikaty między procesami. Dzięki licznym ćwiczeniom bez problemu utrwalisz zdobytą wiedzę. Książka ta jest wprost genialną pozycją dla wszystkich osób chcących wkroczyć w świat języka C. Przyda się również studentom na zajęciach z programowania. Warto ją mieć!
Zainwestuj czas w naukę C i poznaj:
- składnię języka
- sposoby zarządzania pamięcią
- metody komunikacji z siecią
- możliwości kompilatora
Poznaj język C - ta wiedza zaprocentuje!
Spis treści
Wprowadzenie
- Dla kogo jest przeznaczona ta książka? (xxviii)
- Wiemy, co sobie myślisz (xxix)
- Metapoznanie (xxxi)
- Zmuś swój mózg do posłuszeństwa (xxxiii)
- Przeczytaj to (xxxiv)
- Zespół recenzentów technicznych (xxxvi)
- Podziękowania (xxxvii)
1. Zaczynamy poznawać C
- C to język do pisania małych, szybkich programów (2)
- Ale jak wygląda skompilowany program napisany w C? (5)
- A jak można uruchomić program? (9)
- Dwa rodzaje poleceń (14)
- Oto kod, jakim aktualnie dysponujemy (15)
- Liczenie kart? W języku C? (17)
- Wartości logiczne to nie tylko sprawdzanie równości (18)
- Jak aktualnie wygląda nasz kod? (25)
- Pociąg do Switcherado (26)
- Czasami jeden raz nie wystarcza... (29)
- Pętle często mają taką samą strukturę... (30)
- Instrukcji break używamy, by wydostać się z pętli... (31)
- Twój niezbędnik C (40)
2. Pamięć i wskaźniki
- Kod C zawiera wskaźniki (42)
- Grzebiemy w pamięci (43)
- Stawiamy żagle ze wskaźnikami (44)
- Spróbujmy przekazać wskaźnik do zmiennej (47)
- Stosowanie wskaźników (48)
- Jak przekazać łańcuch znaków do funkcji? (53)
- Zmienne tablicowe są jak wskaźniki... (54)
- Co myśli komputer, wykonując nasz kod? (55)
- Jednak zmienne tablicowe nie są tak do końca wskaźnikami (59)
- Dlaczego tablice naprawdę zaczynają się od 0? (61)
- Dlaczego wskaźniki mają typ? (62)
- Stosowanie wskaźników do wprowadzania danych (65)
- Używając funkcji scanf(), uważaj! (66)
- Alternatywą dla scanf() jest fgets() (67)
- Literały łańcuchowe nie mogą być nigdy modyfikowane (72)
- Jeśli chcesz zmienić łańcuch - skopiuj go (74)
- Ściąga z pamięci (80)
- Twój niezbędnik C (81)
2,5. Łańcuchy znaków
- Desperacko poszukuję Franka (84)
- Utwórz tablicę tablic (85)
- Odnajdywanie łańcucha zawierającego określony tekst (86)
- Stosowanie funkcji strstr() (89)
- Czas na przegląd kodu (94)
- Tablica tablic czy tablica wskaźników? (98)
- Twój niezbędnik C (99)
3. Tworzenie małych programów narzędziowych
- Małe programy narzędziowe mogą rozwiązywać wielkie problemy (102)
- Oto sposób wykorzystania programu (106)
- Ale my nie używamy plików... (107)
- Możesz skorzystać z przekierowania (108)
- Przedstawiamy standardowy strumień błędów (118)
- Domyślnie strumień błędów jest wyświetlany na ekranie (119)
- fprintf() zapisuje dane w strumieniu (120)
- Zaktualizujmy kod, by korzystał z funkcji fprintf() (121)
- Niewielkie programy narzędziowe są elastyczne (126)
- Nie zmieniaj programu geo2json (127)
- Różne zadania wymagają różnych narzędzi (128)
- Połącz wejście i wyjście przy użyciu potoku (129)
- Program narzędziowy bermuda (130)
- A jeśli chcemy przekazywać wyniki do więcej niż jednego pliku? (135)
- Stwórz swoje własne strumienie danych (136)
- Nieco więcej o funkcji main() (139)
- Niech biblioteka wykona pracę za nas (147)
- Twój niezbędnik C (154)
4. Stosowanie wielu plików źródłowych
- Krótki przewodnik po typach danych (160)
- Nie umieszczaj czegoś dużego w czymś małym (161)
- Użyj rzutowania, by zapisać wartość zmiennoprzecinkową w zmiennej całkowitej (162)
- O nie... to bezrobotni aktorzy... (166)
- Zobaczmy, co się stało z kodem (167)
- Kompilatory nie lubią niespodzianek (169)
- Oddziel deklaracje od definicji (171)
- Tworzenie pierwszego pliku nagłówkowego (172)
- Jeśli oprogramowałeś często używane operacje... (180)
- Możesz rozdzielić kod, umieszczając go w osobnych plikach (181)
- Za kulisami kompilacji (182)
- Współdzielony kod trzeba umieścić w osobnym pliku źródłowym (184)
- To nie jest kosmiczna technologia... a może jest? (187)
- Nie rekompiluj każdego pliku (188)
- Najpierw skompiluj źródła do plików obiektowych (189)
- Ciągłe śledzenie zmian w plikach jest trudne (194)
- Zautomatyzuj kompilacje, używając narzędzia make (196)
- Jak działa make (197)
- Przekaż informacje o kodzie, używając pliku makefile (198)
- Startujemy! (203)
- Twój niezbędnik C (204)
Laboratorium C. 1. Arduino
5. Struktury, unie i pola bitowe
- Czasami musisz rozdawać wiele danych (216)
- Rozmowa trójstronna (217)
- Twórz swoje własne strukturalne typy danych przy użyciu struct (218)
- Po prostu daj im rybkę (219)
- Odczytuj pola struktur, używając operatora "." (220)
- Czy można umieścić jedną strukturę wewnątrz drugiej? (225)
- Jak zaktualizować zawartość struktury? (234)
- Ten kod klonuje żółwie (236)
- Potrzebny będzie wskaźnik na strukturę (237)
- (*t).age kontra *t.age (238)
- Czasami rzeczy podobnego typu wymagają danych różnych typów (244)
- Unie pozwalają używać bloku pamięci na różne sposoby (245)
- Jak stosować unie? (246)
- Zmienna typu enum przechowuje symbol (253)
- Czasami potrzebujemy kontroli na poziomie bitów (259)
- Pola bitowe zawierają dowolną liczbę bitów (260)
- Twój niezbędnik C (264)
6. Struktury danych i pamięć dynamiczna
- Czy potrzebujesz elastycznego sposobu przechowywania danych? (266)
- Listy połączone przypominają łańcuchy danych (267)
- Listy połączone pozwalają na dodawanie elementów (268)
- Tworzenie struktur rekurencyjnych (269)
- Tworzenie wysp w języku C... (270)
- Wstawianie elementów pośrodku listy (271)
- Pamięć dynamiczną rezerwuj na stercie (276)
- Zwróć pamięć, kiedy nie będzie już potrzebna (277)
- Proś o pamięć, wywołując malloc()... (278)
- Popraw kod, używając funkcji strdup() (284)
- Zwalniaj pamięć, gdy jej nie potrzebujesz (288)
- Przegląd systemu SPIES (298)
- Detektywi oprogramowania: stosowanie valgrind (300)
- Skorzystaj z programu valgrind kilkakrotnie, by zebrać więcej dowodów (301)
- Przeanalizuj dowody (302)
- Sprawdzenie poprawek (305)
- Twój niezbędnik C (307)
7. Zaawansowane funkcje
- Szukając Pana Doskonałego... (310)
- Przekaż kod do funkcji (314)
- Musisz przekazać funkcji find() nazwę funkcji testującej (315)
- Każda nazwa funkcji jest wskaźnikiem do tej funkcji... (316)
- ...ale nie ma żadnego typu danych reprezentującego funkcję (317)
- Jak utworzyć wskaźnik do funkcji (318)
- Posortuj to, używając standardowej biblioteki C (323)
- Użyj wskaźnika do funkcji, by określić porządek sortowania (324)
- Automatyzacja generowania listów do Jana (332)
- Stwórz tablicę wskaźników do funkcji (336)
- Zapewnij swoim funkcjom elastyyyyyczność (341)
- Twój niezbędnik C (348)
8. Biblioteki statyczne i dynamiczne
- Kod, który możesz zabrać do banku (350)
- Nawiasy kątowe dołączają standardowe pliki nagłówkowe (352)
- A co zrobić, jeśli będziesz chciał współużytkować jakiś kod? (353)
- Współużytkowanie plików nagłówkowych (354)
- Współużytkowanie plików .o poprzez określanie pełnej ścieżki dostępu (355)
- Archiwum zawiera pliki .o (356)
- Utwórz archiwum, używając polecenia ar... (357)
- I w końcu kompiluj inne programy (358)
- Siłownia Rusz Głową wchodzi na scenę globalną (363)
- Obliczanie spalonych kalorii (364)
- Ale zagadnienie jest nieco bardziej skomplikowane... (367)
- Programy składają się z wielu fragmentów... (368)
- Łączenie dynamiczne następuje podczas działania programu (370)
- Czy pliki .a można łączyć podczas działania programu? (371)
- Najpierw utwórz plik obiektowy (372)
- Nazewnictwo bibliotek dynamicznych zależy od platformy systemowej (373)
- Twój niezbędnik C (385)
Laboratorium C. 2. OpenCV
9. Procesy i wywołania systemowe
- Wywołania systemowe są Twoją gorącą linią z systemem operacyjnym (396)
- Wtem ktoś włamał się do systemu... (400)
- Bezpieczeństwo nie jest jedynym problemem (401)
- Funkcja exec() zapewnia większą kontrolę (402)
- Istnieje wiele funkcji exec() (403)
- Funkcje z tablicą argumentów: execv(), execvp() oraz execve() (404)
- Przekazywanie zmiennych środowiskowych (405)
- Większość wywołań systemowych zawodzi w taki sam sposób (406)
- Czytaj doniesienia, używając RSS (414)
- exec() jest końcem rodu naszego programu (418)
- Uruchamianie procesu potomnego przy użyciu funkcji fork() i exec() (419)
- Twój niezbędnik C (425)
10. Komunikacja pomiędzy procesami
- Przekierowania strumieni wejściowych (428)
- Zajrzyjmy do wnętrza standardowego procesu (429)
- Przekierowanie zastępuje deskryptor (430)
- Funkcja fileno() zwraca deskryptor (431)
- Czasami trzeba poczekać... (436)
- Bądź w kontakcie ze swymi potomkami (440)
- Połącz swoje procesy potokami (441)
- Studium przypadku: otwieranie doniesień w przeglądarce (442)
- W procesie potomnym (443)
- W procesie rodzicielskim (443)
- Otwieranie strony w przeglądarce (444)
- Śmierć procesu (449)
- Przechwytywanie sygnałów i wykonywanie własnego kodu (450)
- Struktury sigaction są rejestrowane przy użyciu funkcji sigaction() (451)
- Modyfikacja kodu i wykorzystanie procedury obsługi sygnałów (452)
- Używaj polecenia kill, by wysyłać sygnały (455)
- Wysyłanie do procesu sygnału pobudki (456)
- Twój niezbędnik C (464)
11. Gniazda i komunikacja sieciowa
- Internetowy serwer puk-puk (466)
- Prezentacja serwera puk-puk (467)
- PNAR - jak serwery komunikują się z internetem (468)
- Gniazdo nie jest typowym strumieniem danych (470)
- Czasami serwer nie uruchamia się prawidłowo (474)
- Dlaczego mama zawsze powtarzała Ci, byś sprawdzał błędy (475)
- Odczyt danych przesyłanych przez klienta (476)
- Serwer może rozmawiać tylko z jednym klientem naraz (483)
- Możesz użyć fork(), by obsłużyć oba klienty jednocześnie (484)
- Pisanie klienta WWW (488)
- To zadanie klienta (489)
- Utwórz gniazdo dla adresu IP (490)
- Funkcja getaddrinfo() pobiera adresy domen (491)
- Twój niezbędnik C (498)
12. Wątki
- Zadania są sekwencyjne... lub nie... (500)
- ...a procesy nie zawsze są właściwą odpowiedzią (501)
- Proste procesy robią po jednej rzeczy naraz (502)
- Zatrudnij dodatkowych pracowników: skorzystaj z wątków (503)
- Jak się tworzy wątki? (504)
- Utwórz wątki, używając funkcji pthread_create() (505)
- Ten kod nie jest wielobieżny (510)
- Potrzeba Ci sygnalizacji świetlnej (511)
- Użyj muteksu jako sygnalizacji świetlnej (512)
- Twój niezbędnik C (519)
Laboratorium C. 3. Blasteroidy
A Pozostałości
- 1. Operatory (538)
- 2. Dyrektywy preprocesora (540)
- 3. Słowo kluczowe static (541)
- 4. Jak duże to jest? (542)
- 5. Automatyczne testowanie (543)
- 6. Więcej o gcc (544)
- 7. Więcej o programie make (546)
- 8. Narzędzia programistyczne (548)
- 9. Tworzenie graficznego interfejsu użytkownika (549)
- 10. Materiały (550)
B Zagadnienia programowania w C
Skorowidz (573)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-5235-8 |
Rozmiar pliku: | 21 MB |