reklama - zainteresowany?

Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C) - Helion

Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)
ebook
Autor: Zed A. Shaw
Tytuł oryginału: Learn C the Hard Way: Practical Exercises on the Computational Subjects You Keep Avoiding (Like C)
Tłumaczenie: Robert Górczyński
ISBN: 978-83-283-2546-3
stron: 376, Format: ebook
Data wydania: 2016-06-26
Księgarnia: Helion

Cena książki: 50,25 zł (poprzednio: 67,00 zł)
Oszczędzasz: 25% (-16,75 zł)

Dodaj do koszyka Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)

Tagi: C - Programowanie | Techniki programowania

Istnieje bardzo wiele nowoczesnych jÄ™zyków programowania, które pozwalajÄ… na szybkie wdrożenie i pracÄ™. Takim jÄ™zykiem na pewno nie jest C. Niektóre jego cechy bardzo utrudniajÄ… tworzenie bezpiecznego i bezawaryjnego kodu. Warto wiÄ™c dogÅ‚Ä™bnie poznać C — przy bardzo prostej skÅ‚adni i niewielkich wymaganiach sprzÄ™towych ma potężne możliwoÅ›ci!

Niniejsza książka jest bardzo dobrym podrÄ™cznikiem dla poczÄ…tkujÄ…cych programistów. Nauczysz siÄ™ C, wykonujÄ…c 52 sprytnie skonstruowane zadania zilustrowane kodem i specjalnie opracowanymi klipami wideo. Duży nacisk zostaÅ‚ poÅ‚ożony na dogÅ‚Ä™bnÄ… analizÄ™ tworzonego kodu — autor zmusza Czytelnika do zrozumienia znaczenia każdej linii programu, do koncentracji i dokÅ‚adnoÅ›ci. ZachÄ™ca też do praktykowania tzw. programowania defensywnego, dziÄ™ki któremu możliwe jest podniesienie jakoÅ›ci i bezpieczeÅ„stwa tworzonego oprogramowania. WartoÅ›ciowym elementem książki sÄ… wskazówki, jak zepsuć napisany kod, a nastÄ™pnie go zabezpieczyć. Bardzo uÅ‚atwia to unikanie wielu poważnych, czÄ™sto spotykanych bÅ‚Ä™dów.

Najistotniejsze zagadnienia poruszone w książce:

  • Podstawowa skÅ‚adnia C
  • Konfiguracja Å›rodowiska programistycznego, kompilacja kodu, pliki Makefile i linkery
  • Kontrola przebiegu dziaÅ‚ania programu, alokacja pamiÄ™ci
  • Operacje wejÅ›cia-wyjÅ›cia i pliki, stosy i kolejki
  • Usuwanie bÅ‚Ä™dów, programowanie defensywne i automatyczne testowanie
  • Eliminacja bÅ‚Ä™du przepeÅ‚nienia stosu, niedozwolonego dostÄ™pu do pamiÄ™ci itd.
  • Hakowanie wÅ‚asnego kodu utworzonego w C

Zrozum C, programuj starannie — dobrze dziaÅ‚ać może tylko dobry kod!


Zed Shaw — ceniony programista, którego najbardziej znanym projektem jest serwer WWW Mongrel dla aplikacji Ruby. Jest również autorem wielu artykułów i książek dotyczÄ…cych technik programowania, jak Learn Python the Hard Way i Learn Ruby the Hard Way, które cieszÄ… siÄ™ ogromnÄ… popularnoÅ›ciÄ… — sÄ… czytane i dyskutowane przez miliony Czytelników na caÅ‚ym Å›wiecie. Shaw posiada niezwykÅ‚Ä… umiejÄ™tność pisania o trudnych zagadnieniach w sposób przystÄ™pny, żywy i interesujÄ…cy. Potrafi objaÅ›niać najtrudniejsze zagadnienia informatyki jak nikt inny.

Dodaj do koszyka Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)

 

Osoby które kupowały "Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)", wybierały także:

  • JÄ™zyk C. Kurs video. Praktyczne wprowadzenie do programowania
  • Linux. Programowanie systemowe
  • JÄ™zyk C. Solidna wiedza w praktyce. Wydanie VIII
  • Tablice informatyczne. C
  • Programowanie współbieżne. Systemy czasu rzeczywistego

Dodaj do koszyka Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)

Spis treści

Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C) eBook -- spis treści

Podziękowania (12)

Ta książka tak naprawdę nie jest o języku C (13)

  • Niezdefiniowane zachowania (14)
  • C to jÄ™zyk zarazem Å›wietny i paskudny (15)
  • Czego siÄ™ nauczysz? (16)
  • Jak czytać tÄ™ książkÄ™? (16)
  • Wideo (17)
  • Podstawowe umiejÄ™tnoÅ›ci (18)
    • Czytanie i pisanie (18)
    • Zwracanie uwagi na szczegóÅ‚y (18)
    • Wychwytywanie różnic (19)
    • Planowanie i debugowanie (19)

Przygotowania (20)

  • Linux (20)
  • OS X (20)
  • Windows (21)
  • Edytor tekstu (21)
    • Nie używaj IDE (22)

Ćwiczenie 1. Odkurzenie kompilatora (24)

  • Omówienie kodu w pliku (24)
  • Co powinieneÅ› zobaczyć? (25)
  • Jak to zepsuć? (26)
  • Zadania dodatkowe (26)

Ćwiczenie 2. Użycie pliku Makefile podczas kompilacji (28)

  • Użycie narzÄ™dzia make (28)
  • Co powinieneÅ› zobaczyć? (29)
  • Jak to zepsuć? (30)
  • Zadania dodatkowe (30)

Ćwiczenie 3. Sformatowane dane wyjściowe (32)

  • Co powinieneÅ› zobaczyć? (33)
  • ZewnÄ™trzne badania (33)
  • Jak to zepsuć? (33)
  • Zadania dodatkowe (34)

Ćwiczenie 4. Użycie debugera (36)

  • Sztuczki z GDB (36)
  • Krótki przewodnik po GDB (36)
  • Krótki przewodnik po LLDB (37)

Ćwiczenie 5. Nauka na pamięć operatorów w C (40)

  • Jak uczyć siÄ™ na pamięć? (40)
  • Listy operatorów (41)

Ćwiczenie 6. Nauka na pamięć składni C (46)

  • SÅ‚owa kluczowe (46)
  • SkÅ‚adnia struktur (47)
  • SÅ‚owo zachÄ™ty (50)
  • SÅ‚owo ostrzeżenia (51)

Ćwiczenie 7. Zmienne i typy (52)

  • Co powinieneÅ› zobaczyć? (53)
  • Jak to zepsuć? (54)
  • Zadania dodatkowe (54)

Ćwiczenie 8. Konstrukcje if, else-if i else (56)

  • Co powinieneÅ› zobaczyć? (57)
  • Jak to zepsuć? (57)
  • Zadania dodatkowe (58)

Ćwiczenie 9. Pętla while i wyrażenia boolowskie (60)

  • Co powinieneÅ› zobaczyć? (60)
  • Jak to zepsuć? (61)
  • Zadania dodatkowe (61)

Ćwiczenie 10. Konstrukcja switch (62)

  • Co powinieneÅ› zobaczyć? (64)
  • Jak to zepsuć? (65)
  • Zadania dodatkowe (65)

Ćwiczenie 11. Tablice i ciągi tekstowe (66)

  • Co powinieneÅ› zobaczyć? (67)
  • Jak to zepsuć? (68)
  • Zadania dodatkowe (69)

Ćwiczenie 12. Wielkość i tablice (70)

  • Co powinieneÅ› zobaczyć? (71)
  • Jak to zepsuć? (72)
  • Zadania dodatkowe (73)

Ćwiczenie 13. PÄ™tla for i tablica ciÄ…gów tekstowych (74)

  • Co powinieneÅ› zobaczyć? (75)
  • Zrozumienie tablicy ciÄ…gów tekstowych (76)
  • Jak to zepsuć? (76)
  • Zadania dodatkowe (77)

Ćwiczenie 14. Tworzenie i użycie funkcji (78)

  • Co powinieneÅ› zobaczyć? (79)
  • Jak to zepsuć? (80)
  • Zadania dodatkowe (80)

Ćwiczenie 15. Wskaźniki, przerażające wskaźniki (82)

  • Co powinieneÅ› zobaczyć? (84)
  • Poznajemy wskaźniki (85)
  • Praktyczne użycie wskaźników (86)
  • Leksykon wskaźnika (87)
  • Wskaźniki nie sÄ… tablicami (87)
  • Jak to zepsuć? (87)
  • Zadania dodatkowe (88)

Ćwiczenie 16. Struktury i prowadzące do nich wskaźniki (90)

  • Co powinieneÅ› zobaczyć? (93)
  • Poznajemy struktury (94)
  • Jak to zepsuć? (94)
  • Zadania dodatkowe (95)

Ćwiczenie 17. Alokacja pamięci stosu i sterty (96)

  • Co powinieneÅ› zobaczyć? (102)
  • Alokacja stosu kontra sterty (102)
  • Jak to zepsuć? (103)
  • Zadania dodatkowe (104)

Ćwiczenie 18. Wskaźniki do funkcji (106)

  • Co powinieneÅ› zobaczyć? (110)
  • Jak to zepsuć? (110)
  • Zadania dodatkowe (111)

Ćwiczenie 19. Opracowane przez Zeda wspaniałe makra debugowania (112)

  • Problem obsÅ‚ugi bÅ‚Ä™dów w C (112)
  • Makra debugowania (113)
  • Użycie dbg.h (115)
  • Co powinieneÅ› zobaczyć? (118)
  • W jaki sposób CPP obsÅ‚uguje makra? (118)
  • Zadania dodatkowe (120)

Ćwiczenie 20. Zaawansowane techniki debugowania (122)

  • Użycie makra debug() kontra GDB (122)
  • Strategia debugowania (124)
  • Zadania dodatkowe (125)

Ćwiczenie 21. Zaawansowane typy danych i kontrola przepływu (126)

  • DostÄ™pne typy danych (126)
    • Modyfikatory typu (126)
    • Kwalifikatory typów (127)
    • Konwersja typu (127)
    • Wielkość typu (128)
  • DostÄ™pne operatory (129)
    • Operatory matematyczne (130)
    • Operatory danych (130)
    • Operatory logiczne (131)
    • Operatory bitowe (131)
    • Operatory boolowskie (131)
    • Operatory przypisania (131)
  • DostÄ™pne struktury kontroli (132)
  • Zadania dodatkowe (132)

Ćwiczenie 22. Stos, zakres i elementy globalne (134)

  • Pliki ex22.h i ex22.c (134)
  • Plik ex22_main.c (136)
  • Co powinieneÅ› zobaczyć? (138)
  • Zakres, stos i bÅ‚Ä™dy (139)
  • Jak to zepsuć? (140)
  • Zadania dodatkowe (141)

Ćwiczenie 23. Poznaj mechanizm Duffa (142)

  • Co powinieneÅ› zobaczyć? (145)
  • RozwiÄ…zanie Å‚amigÅ‚ówki (145)
    • Dlaczego w ogóle mam siÄ™ tak mÄ™czyć? (146)
  • Zadania dodatkowe (146)

Ćwiczenie 24. Dane wejściowe, dane wyjściowe i pliki (148)

  • Co powinieneÅ› zobaczyć? (150)
  • Jak to zepsuć? (151)
  • Funkcje wejÅ›cia-wyjÅ›cia (151)
  • Zadania dodatkowe (152)

Ćwiczenie 25. Funkcje o zmiennej liczbie argumentów (154)

  • Co powinieneÅ› zobaczyć? (158)
  • Jak to zepsuć? (158)
  • Zadania dodatkowe (158)

Ćwiczenie 26. Projekt logfind (160)

  • Specyfikacja logfind (160)

Ćwiczenie 27. Programowanie kreatywne i defensywne (162)

  • Nastawienie programowania kreatywnego (162)
  • Nastawienie programowania defensywnego (163)
  • 8 strategii programisty defensywnego (164)
  • Zastosowanie oÅ›miu strategii (164)
    • Nigdy nie ufaj danym wejÅ›ciowym (164)
    • Unikanie bÅ‚Ä™dów (168)
    • Awarie powinny być wczesne i otwarte (169)
    • Dokumentuj zaÅ‚ożenia (170)
    • Preferuj prewencjÄ™ zamiast dokumentacji (170)
    • Automatyzuj wszystko (171)
    • Upraszczaj i wyjaÅ›niaj (171)
    • MyÅ›l logicznie (172)
  • Kolejność nie ma znaczenia (172)
  • Zadania dodatkowe (173)

Ćwiczenie 28. Pośrednie pliki Makefile (174)

  • Podstawowa struktura projektu (174)
  • Makefile (175)
    • NagÅ‚ówek (176)
    • Docelowe wersje programu (177)
    • Testy jednostkowe (178)
    • Operacje porzÄ…dkujÄ…ce (180)
    • Instalacja (180)
    • Sprawdzenie (180)
  • Co powinieneÅ› zobaczyć? (181)
  • Zadania dodatkowe (181)

Ćwiczenie 29. Biblioteki i linkowanie (182)

  • Dynamiczne wczytywanie biblioteki wspóÅ‚dzielonej (183)
  • Co powinieneÅ› zobaczyć? (185)
  • Jak to zepsuć? (187)
  • Zadania dodatkowe (187)

Ćwiczenie 30. Zautomatyzowane testowanie (188)

  • Przygotowanie frameworka testów jednostkowych (189)
  • Zadania dodatkowe (193)

Ćwiczenie 31. Najczęściej spotykane niezdefiniowane zachowanie (194)

  • 20 najczęściej spotykanych przypadków niezdefiniowanego zachowania (196)
    • Najczęściej spotykane niezdefiniowane zachowanie (196)

Ćwiczenie 32. Lista dwukierunkowa (200)

  • Czym sÄ… struktury danych? (200)
  • Budowa biblioteki (200)
  • Lista dwukierunkowa (202)
    • Definicja (202)
    • Implementacja (204)
  • Testy (207)
  • Co powinieneÅ› zobaczyć? (210)
  • Jak można usprawnić kod? (210)
  • Zadania dodatkowe (211)

Ćwiczenie 33. Algorytmy listy dwukierunkowej (212)

  • Sortowanie bÄ…belkowe i sortowanie przez scalanie (212)
  • Test jednostkowy (213)
  • Implementacja (215)
  • Co powinieneÅ› zobaczyć? (217)
  • Jak można usprawnić kod? (218)
  • Zadania dodatkowe (219)

Ćwiczenie 34. Tablica dynamiczna (220)

  • Wady i zalety (227)
  • Jak można usprawnić kod? (228)
  • Zadania dodatkowe (228)

Ćwiczenie 35. Sortowanie i wyszukiwanie (230)

  • Sortowanie pozycyjne i wyszukiwanie binarne (233)
    • Unie w jÄ™zyku C (234)
    • Implementacja (235)
    • Funkcja RadixMap_find() i wyszukiwanie binarne (241)
    • RadixMap_sort() i radix_sort() (242)
  • Jak można usprawnić kod? (243)
  • Zadania dodatkowe (244)

Ćwiczenie 36. Bezpieczniejsze ciągi tekstowe (246)

  • Dlaczego stosowanie ciÄ…gów tekstowych C to niewiarygodnie kiepski pomysÅ‚? (246)
  • Użycie bstrlib (248)
  • Poznajemy bibliotekÄ™ (249)

Ćwiczenie 37. Struktura Hashmap (250)

  • Testy jednostkowe (257)
  • Jak można usprawnić kod? (259)
  • Zadania dodatkowe (260)

Ćwiczenie 38. Algorytmy struktury Hashmap (262)

  • Co powinieneÅ› zobaczyć? (267)
  • Jak to zepsuć? (268)
  • Zadania dodatkowe (269)

Ćwiczenie 39. Algorytmy ciągu tekstowego (270)

  • Co powinieneÅ› zobaczyć? (277)
  • Analiza wyników (279)
  • Zadania dodatkowe (280)

Ćwiczenie 40. Binarne drzewo poszukiwań (282)

  • Jak można usprawnić kod? (295)
  • Zadania dodatkowe (295)

Ćwiczenie 41. Projekt devpkg (296)

  • Co to jest devpkg? (296)
    • Co chcemy zbudować? (296)
    • Projekt (297)
    • Biblioteki Apache Portable Runtime (297)
  • Przygotowanie projektu (299)
    • PozostaÅ‚e zależnoÅ›ci (299)
  • Plik Makefile (299)
  • Pliki kodu źródÅ‚owego (300)
    • Funkcje bazy danych (302)
    • Funkcje powÅ‚oki (305)
    • Funkcje poleceÅ„ programu (309)
    • Funkcja main() w devpkg (314)
  • Ostatnie wyzwanie (316)

Ćwiczenie 42. Stos i kolejka (318)

  • Co powinieneÅ› zobaczyć? (321)
  • Jak można usprawnić kod? (321)
  • Zadania dodatkowe (322)

Ćwiczenie 43. Prosty silnik dla danych statystycznych (324)

  • Odchylenie standardowe i Å›rednia (324)
  • Implementacja (325)
  • Jak można użyć tego rozwiÄ…zania? (330)
  • Zadania dodatkowe (331)

Ćwiczenie 44. Bufor cykliczny (334)

  • Testy jednostkowe (337)
  • Co powinieneÅ› zobaczyć? (337)
  • Jak można usprawnić kod? (338)
  • Zadania dodatkowe (338)

Ćwiczenie 45. Prosty klient TCP/IP (340)

  • Modyfikacja pliku Makefile (340)
  • Kod netclient (340)
  • Co powinieneÅ› zobaczyć? (344)
  • Jak to zepsuć? (344)
  • Zadania dodatkowe (344)

Ćwiczenie 46. Drzewo trójkowe (346)

  • Wady i zalety (354)
  • Jak można usprawnić kod? (355)
  • Zadania dodatkowe (355)

Ćwiczenie 47. Szybszy router URL (356)

  • Co powinieneÅ› zobaczyć? (358)
  • Jak można usprawnić kod? (359)
  • Zadania dodatkowe (360)

Ćwiczenie 48. Prosty serwer sieciowy (362)

  • Specyfikacja (362)

Ćwiczenie 49. Serwer danych statystycznych (364)

  • Specyfikacja (364)

Ćwiczenie 50. Routing danych statystycznych (366)

Ćwiczenie 51. Przechowywanie danych statystycznych (368)

  • Specyfikacja (368)

Ćwiczenie 52. Hacking i usprawnianie serwera (370)

Zakończenie (372)

Skorowidz (373)

Dodaj do koszyka Programowanie w C. Sprytne podejście do trudnych zagadnień, których wolałbyś unikać (takich jak język C)

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.