
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.

- Organizacja książki (12)
- Omówienie rozdziałów (12)
- Uwagi dotyczące trzeciej edycji (15)
- Zastosowane style czcionki (16)
- FTP (17)
Rozdział 1. Czym jest język C (21)
- Na czym polega sztuka programowania (22)
- Krótka historia języka C (25)
- Jak działa język C (25)
- Jak uczyć się języka C (27)
- Program - od pomysłu do realizacji (30)
- Tworzenie prawdziwego programu (31)
- Tworzenie programu przy użyciu kompilatora trybu wiersza poleceń (31)
- Tworzenie programu przy użyciu zintegrowanego środowiska programowania IDE (35)
- Uzyskanie pomocy w systemie UNIX (49)
- Uzyskanie pomocy w zintegrowanym środowisku programowania IDE (50)
- Lista poleceń środowiska IDE (50)
- Ćwiczenia z programowania (52)
- Popularne style programowania (58)
- Różne szkoły programowania (60)
- Wcięcia oraz formatowanie kodu źródłowego (61)
- Przejrzystość (62)
- Prostota (62)
- Podsumowanie (63)
- Elementy programu (66)
- Podstawowa struktura programu (66)
- Wyrażenia proste (68)
- Zmienne i ich zakres (69)
- Deklaracja zmiennych (70)
- Typ całkowity (70)
- Instrukcja przypisania (71)
- Funkcja printf (72)
- Typ zmiennoprzecinkowy (74)
- Porównanie dzielenia liczb zmiennoprzecinkowych i dzielenia liczb całkowitych (75)
- Typ znakowy (76)
- Odpowiedzi (78)
- Ćwiczenia z programowania (79)
- Tablice (82)
- Łańcuchy (83)
- Wprowadzanie łańcuchów (85)
- Tablice wielowymiarowe (88)
- Wprowadzanie liczb (89)
- Inicjalizacja zmiennych (91)
- Typ całkowity (92)
- Typ zmiennoprzecinkowy (94)
- Deklaracje stałych (95)
- Stałe szesnastkowe i ósemkowe (96)
- Operatory specjalne (96)
- Efekty uboczne (97)
- ++x czy x++ (98)
- Jeszcze o efektach ubocznych (99)
- Odpowiedzi (100)
- Ćwiczenia z programowania (101)
- Instrukcja if (104)
- Instrukcja else (105)
- Jak uniknąć stosowania funkcji strcmp (106)
- Pętle (106)
- Instrukcja while (107)
- Instrukcja break (109)
- Instrukcja continue (110)
- Zastosowanie instrukcji przypisania a efekt uboczny (111)
- Odpowiedzi (112)
- Ćwiczenia z programowania (112)
- Przygotowanie (117)
- Specyfikacja (118)
- Projekt programu (119)
- Prototyp (120)
- Plik Makefile (122)
- Testowanie (124)
- Wykrywanie błędów (125)
- Konserwacja (127)
- Aktualizacja (127)
- Elektroniczna archeologia (128)
- Redagowanie kodu programu (128)
- Zastosowanie debugera (129)
- Edytor tekstu jako przeglądarka (129)
- Umieszczanie komentarzy (129)
- Ćwiczenia z programowania (132)
Rozdział 8. Dodatkowe instrukcje sterujące (135)
- Instrukcja for (135)
- Instrukcja switch (138)
- Instrukcja switch, break oraz continue (143)
- Odpowiedzi (144)
- Ćwiczenia z programowania (145)
- Zakres i klasa zmiennej (147)
- Funkcje (151)
- Funkcje bez parametrów (154)
- Programowanie strukturalne (155)
- Rekurencja (157)
- Odpowiedzi (158)
- Ćwiczenia z programowania (159)
- Instrukcja #define (162)
- Kompilacja warunkowa (167)
- Pliki dołączane (170)
- Makra parametryzowane (171)
- Funkcje zaawansowane (173)
- Podsumowanie (173)
- Odpowiedzi (173)
- Ćwiczenia z programowania (176)
- Operatory bitowe (179)
- Koniunkcja bitowa and (&) (179)
- Bitowa alternatywa (|) (182)
- Różnica symetryczna (^) (182)
- Negacja bitowa not (~) (183)
- Operatory przesunięcia (<<, >>) (183)
- Ustawianie, usuwanie i testowanie bitów (185)
- Grafika bitmapowa (188)
- Odpowiedzi (193)
- Ćwiczenia z programowania (194)
- Struktury (196)
- Unie (197)
- Instrukcja typedef (200)
- Typ wyliczeniowy enum (201)
- Konwersja typów (rzutowanie) (201)
- Struktury upakowane oraz pola bitowe (202)
- Tablice struktur (203)
- Podsumowanie (205)
- Ćwiczenia z programowania (205)
- Wskaźniki jako argumenty funkcji (212)
- Wskaźniki stałych (215)
- Wskaźniki i tablice (215)
- Jak nie używać wskaźników (220)
- Użycie wskaźników do podziału łańcucha (221)
- Wskaźniki i struktury (225)
- Argumenty wiersza poleceń (225)
- Ćwiczenia z programowania (230)
- Odpowiedzi (230)
- Funkcje konwersji (237)
- Pliki binarne i tekstowe (ASCII) (239)
- Znak końca wiersza (240)
- Binarne operacje wejścia-wyjścia (242)
- Problemy z buforowaniem (243)
- Niebuforowane operacje wejścia-wyjścia (244)
- Tworzenie formatów pliku (248)
- Odpowiedzi (250)
- Ćwiczenia z programowania (251)
- Wykrywanie błędów (253)
- Debugery interaktywne (263)
- Algorytm binarnego wyszukiwania - wykrywanie błędów (267)
- Błędy wykonania (277)
- Opowiadana metoda wykrywania błędów (278)
- Optymalizacja (279)
- Odpowiedzi (286)
- Ćwiczenia z programowania (287)
- Format liczb zmiennoprzecinkowych (290)
- Dodawanie-odejmowanie liczb zmiennoprzecinkowych (291)
- Mnożenie liczb zmiennoprzecinkowych (292)
- Dzielenie liczb zmiennoprzecinkowych (292)
- Przepełnienie i niedomiar (293)
- Błąd zaokrąglenia (294)
- Dokładność (294)
- Minimalizacja błędu zaokrąglenia (295)
- Pomiar dokładności (296)
- Dokładność i szybkość (297)
- Szereg potęgowy (298)
- Ćwiczenia z programowania (300)
Rozdział 17. Zaawansowane wskaźniki (303)
- Wskaźniki i struktury (304)
- Funkcja free (307)
- Lista dowiązań (308)
- Operator wskaźnika struktury (311)
- Uporządkowane listy dowiązań (311)
- Lista podwójnych dowiązań (314)
- Drzewa (316)
- Wyświetlanie zawartości drzewa (320)
- Pozostała część programu (321)
- Struktury danych programu do gry w szachy (324)
- Odpowiedzi (326)
- Ćwiczenia z programowania (327)
- Moduły (330)
- Sekcja publiczna i prywatna (330)
- Modyfikator extern (331)
- Nagłówek (333)
- Ciało modułu (335)
- Program wykorzystujący tablice nieograniczone (336)
- Plik Makefile dla wielu plików (338)
- Zastosowanie tablicy nieograniczonej (341)
- Podział projektu na moduły (347)
- Przykład podziału na moduły: edytor tekstu (348)
- Kompilator (349)
- Arkusz kalkulacyjny (350)
- Zasady tworzenia modułu (351)
- Ćwiczenia z programowania (352)
- Funkcje zgodne ze stylem K&R (356)
- Zmiana biblioteki (358)
- Brakujące funkcje (359)
- Zmiany funkcji free/malloc (359)
- Program lint (360)
- Odpowiedzi (360)
- Modularność (364)
- Długość słowa (364)
- Problem z kolejnością bajtów (365)
- Problem z wyrównywaniem (366)
- Problem ze wskaźnikiem pustym (367)
- Problemy z nazwą pliku (368)
- Typy plików (369)
- Podsumowanie (369)
- Odpowiedzi (369)
- Instrukcja do/while (371)
- Instrukcja skoku goto (372)
- Konstrukcja ?: (373)
- Operator , (373)
- Kwalifikator volatile (374)
- Odpowiedzi (374)
- Analiza wymagań (376)
- Specyfikacja (376)
- Projekt programu (378)
- Kodowanie (383)
- Opis funkcjonalny (383)
- Rozszerzalność (385)
- Testowanie (386)
- Aktualizacje (386)
- Końcowe uwagi (387)
- Pliki programu (387)
- Ćwiczenia z programowania (406)
- Ogólne zalecenia (407)
- Projektowanie (408)
- Deklaracje (408)
- Instrukcja switch (409)
- Preprocesor (409)
- Styl (409)
- Kompilacja (410)
- Ostatnia rada (410)
- Odpowiedzi (410)
Dodatek A Tabela kodów ASCII (413)
Dodatek B Zakresy i wzory konwersji parametrów przekazywanych (417)
Dodatek C Zasady dotyczące priorytetu operatorów (419)
Dodatek D Program wyznaczający wartość funkcji sinus przy użyciu szeregu potęgowego (421)
Słownik terminów (425)
Skorowidz (449)