Język C. Szkoła programowania

103,95

Opis

Język C niewątpliwie należy do kanonu języków programowania. Cechuje się elegancją i prostotą, jest wszechstronny i elastyczny, jednak uważa się go za trudny i wymagający. Na pewno warto opanować C — jeśli nauczysz się tworzyć solidny kod w tym języku, poradzisz sobie z każdym innym językiem programowania.Trzymasz w dłoni kolejne wydanie niezwykle popularnego podręcznika do nauki C. Podobnie jak poprzednie wydania, także to zostało zaktualizowane i uzupełnione, między innymi o elementy standardu C11. Książka stanowi przemyślane, przejrzyste i wnikliwe wprowadzenie do języka C. Czytelnie wyjaśnia zasady programowania, zawiera opisy licznych rozwiązań programistycznych, setki przykładów kodu oraz ćwiczenia do samodzielnego wykonania. Dzięki takiemu układowi treści wiele osób nauczyło się C właśnie z tej książki, a kolejne jej wydania są przyjmowane z entuzjazmem.W tej książce znajdziesz:kompletne omówienie podstaw języka C i najważniejszych paradygmatów programowaniawyczerpujące informacje o nowych elementach Cjasne wskazówki dotyczące wyboru poszczególnych metod programowania w różnych sytuacjachsetki przykładowych fragmentów kodupytania sprawdzające i ćwiczenia utrwalające w każdym rozdzialeliczne informacje o możliwościach języka CNaucz się C, a zrozumiesz istotę programowania!Spis treści: O autorze (19)Przedmowa (21)Rozdział 1. Zaczynamy (23)Skąd C? (23)Dlaczego C? (24)Cechy użytkowe (25)Efektywność (25)Przenośność (25)Moc i elastyczność (26)Ukierunkowanie na programistę (26)Słabe strony (26)Dokąd zmierza C? (27)Co robią komputery? (28)Języki wysokiego poziomu i kompilatory (29)Standardy języka (30)Standard ANSI/ISO C (31)Standard C99 (31)Standard C11 (32)Korzystanie z C – siedem kroków (33)Krok 1. Określenie celów programu (33)Krok 2. Projektowanie programu (34)Krok 3. Pisanie kodu (34)Krok 4. Kompilacja (35)Krok 5. Uruchomienie programu (35)Krok 6. Testowanie i usuwanie błędów (35)Krok 7. Pielęgnowanie i modyfikowanie programu (36)Komentarz (36)Mechanika programowania (37)Pliki kodu obiektowego, pliki wykonywalne i biblioteki (38)UNIX (39)GNU Compiler Collection i LLVM (41)Linux (42)Kompilatory dla komputerów PC (43)Zintegrowane środowiska programistyczne (Windows) (43)Opcja podwójna – Windows/Linux (45)Język C a komputery Mac (45)Jak zorganizowano tę książkę (46)Konwencje zapisu (46)Czcionka (47)Tekst na ekranie (47)Informacje dodatkowe (48)Podsumowanie rozdziału (49)Pytania sprawdzające (49)Ćwiczenie (49)Rozdział 2. Wstęp do C (51)Prosty przykład języka C (51)Objaśnienie (53)Podejście 1. Szybkie streszczenie (53)Podejście 2. Szczegóły (55)Budowa prostego programu (64)Co zrobić, aby Twój program był czytelny? (65)Kolejny krok (66)Dokumentacja (66)Wielokrotne deklaracje (67)Mnożenie (67)Wyświetlanie wielu wartości (67)Wiele funkcji (68)Usuwanie błędów (69)Błędy składniowe (70)Błędy semantyczne (71)Stan programu (72)Słowa kluczowe (73)Kluczowe zagadnienia (74)Podsumowanie rozdziału (74)Pytania sprawdzające (75)Ćwiczenia (76)Rozdział 3. Dane w C (79)Program przykładowy (79)Co nowego? (81)Zmienne i stałe (82)Słowa kluczowe typów danych (83)Typy całkowite a typy zmiennoprzecinkowe (84)Liczba całkowita (85)Liczba zmiennoprzecinkowa (85)Typy danych w C (86)Typ int (86)Inne typy całkowite (91)Korzystanie ze znaków – typ char (96)Typ _Bool (102)Typy przenośne (102)Typy float, double, long double (105)Typy zespolone i urojone (110)Inne typy (111)Rozmiary typów (113)Korzystanie z typów danych (114)Uwaga na argumenty (115)Jeszcze jeden przykład (117)Co się dzieje? (117)Bufor wyjścia (118)Kluczowe zagadnienia (119)Podsumowanie rozdziału (119)Pytania sprawdzające (120)Ćwiczenia (122)Rozdział 4. Łańcuchy znakowe i formatowane wejście-wyjście (125)Na początek… program (126)Łańcuchy znakowe. Wprowadzenie (127)Tablice typu char i znak zerowy (127)Korzystanie z łańcuchów (128)Funkcja strlen() (130)Stałe i preprocesor C (132)Modyfikator const (135)Stałe standardowe (136)Poznać i wykorzystać printf() i scanf() (138)Funkcja printf() (138)Korzystanie z printf() (139)Modyfikatory specyfikatorów konwersji dla printf() (141)Znaczenie konwersji (147)Korzystanie z funkcji scanf() (154)Modyfikator * w funkcjach printf() i scanf() (160)Praktyczne wskazówki (161)Kluczowe zagadnienia (163)Podsumowanie rozdziału (164)Pytania sprawdzające (164)Ćwiczenia (167)Rozdział 5. Operatory, wyrażenia i instrukcje (169)Wstęp do pętli (170)Podstawowe operatory (172)Operator przypisania: = (172)Operator dodawania: + (175)Operator odejmowania: – (176)Operatory znaku: – i + (176)Operator mnożenia: * (177)Operator dzielenia: / (179)Priorytet operatorów (180)Priorytet i kolejność obliczeń (182)Niektóre inne operatory (183)Operator sizeof i typ size_t (183)Operator modulo: % (184)Operatory inkrementacji i dekrementacji: ++ i — (186)Dekrementacja — (190)Priorytet (191)Nie próbuj być zbyt sprytny (191)Wyrażenia i instrukcje (193)Wyrażenia (193)Instrukcje (194)Instrukcje złożone (bloki) (197)Konwersje typów (199)Operator rzutowania (202)Funkcje z argumentami (203)Przykładowy program (206)Zagadnienia kluczowe (207)Podsumowanie rozdziału (208)Pytania sprawdzające (209)Ćwiczenia (212)Rozdział 6. Instrukcje sterujące C. Pętle (215)Wracamy do pętli while (216)Komentarz (217)Pętla odczytująca w stylu C (219)Instrukcja while (219)Zakończenie pętli while (220)Kiedy kończy się pętla? (220)while jako pętla z warunkiem wejścia (221)Wskazówki dotyczące składni (222)Co jest większe? Korzystanie z operatorów i wyrażeń relacyjnych (223)Czym jest prawda? (225)Co jeszcze jest prawdą? (226)Problemy z prawdą (227)Nowy typ _Bool (229)Priorytet operatorów relacyjnych (231)Pętle nieokreślone i pętle liczące (232)Pętla for (234)Elastyczność pętli for (235)Inne operatory przypisania: +=, -=, *=, /=, %= (239)Operator przecinkowy: , (241)Zenon z Elei kontra pętla for (244)Pętla z warunkiem wyjścia – do while (245)Której pętli użyć? (248)Pętle zagnieżdżone (249)Omówienie (250)Inny wariant (250)Tablice (251)Współpraca tablicy i pętli for (252)Przykład wykorzystujący pętlę i wartość zwracaną przez funkcję (254)Omówienie programu (257)Korzystanie z funkcji zwracających wartości (258)Zagadnienia kluczowe (258)Podsumowanie rozdziału (259)Pytania sprawdzające (260)Ćwiczenia (264)Rozdział 7. Instrukcje sterujące C. Rozgałęzienia i skoki (269)Instrukcja if (270)Dodajemy else (272)Kolejny przykład: funkcje getchar() i putchar() (273)Rodzina funkcji znakowych ctype.h (276)Wybór spośród wielu możliwości – else if (278)Łączenie else z if (281)Więcej o zagnieżdżonych instrukcjach if (283)Bądźmy logiczni (287)Zapis alternatywny – plik nagłówkowy iso646.h (289)Priorytet (289)Kolejność obliczeń (290)Zakresy (291)Program liczący słowa (292)Operator warunkowy: ?: (296)Dodatki do pętli – continue i break (298)Instrukcja continue (298)Instrukcja break (301)Wybór spośród wielu możliwości – switch i break (304)Korzystanie z instrukcji switch (305)Pobieranie tylko pierwszego znaku w wierszu (307)Etykiety wielokrotne (308)Switch a if else (309)Instrukcja goto (311)Unikanie goto (311)Kluczowe zagadnienia (314)Podsumowanie rozdziału (315)Pytania sprawdzające (316)Ćwiczenia (319)Rozdział 8. Znakowe wejście-wyjście i przekierowywanie (323)Jednoznakowe we-wy – getchar() i putchar() (324)Bufory (325)Kończenie danych wprowadzanych z klawiatury (327)Pliki, strumienie i dane wprowadzane z klawiatury (327)Koniec pliku (329)Przekierowywanie a pliki (332)Przekierowywanie w systemach UNIX, Linux i Windows (332)Tworzenie przyjaźniejszego interfejsu użytkownika (337)Współpraca z buforowanym wejściem (337)Łączenie wejścia liczbowego i znakowego (340)Sprawdzanie poprawności danych wejściowych (343)Analiza programu (347)Strumienie wejściowe a liczby (348)Menu (349)Zadania (349)W kierunku sprawnego działania (350)Łączenie danych znakowych i numerycznych (352)Zagadnienia kluczowe (355)Podsumowanie rozdziału (356)Pytania sprawdzające (356)Ćwiczenia (357)Rozdział 9. Funkcje (361)Przypomnienie (361)Tworzenie i wykorzystanie prostej funkcji (363)Analiza programu (363)Argumenty funkcji (366)Definiowanie funkcji pobierającej argument – argumenty formalne (368)Prototyp funkcji pobierającej argumenty (369)Wywoływanie funkcji pobierającej argumenty – argumenty faktyczne (369)Punkt widzenia czarnej skrzynki (370)Zwracanie wartości z wykorzystaniem instrukcji return (371)Typy funkcji (373)Prototypy ANSI C (375)Problem (375)ANSI C na ratunek! (376)Brak argumentów a argumenty nieokreślone (377)Potęga prototypów (378)Rekurencja (379)Rekurencja bez tajemnic (379)Podstawy rekurencji (380)Rekurencja końcowa (382)Rekurencja i odwracanie kolejności działań (384)Za i przeciw rekurencji (386)Kompilowanie programów zawierających więcej niż jedną funkcję (387)Unix (387)Linux (388)DOS (kompilatory wiersza poleceń) (388)Środowiska IDE dla Windows i OS X (388)Korzystanie z plików nagłówkowych (388)Uzyskiwanie adresów: operator & (392)Modyfikacja zmiennych w funkcji wywołującej (394)Wskaźniki: pierwsze spojrzenie (396)Operator dereferencji: * (396)Deklarowanie wskaźników (396)Wykorzystanie wskaźników do komunikacji pomiędzy funkcjami (398)Kluczowe zagadnienia (402)Podsumowanie rozdziału (403)Pytania sprawdzające (403)Ćwiczenia (404)Rozdział 10. Tablice i wskaźniki (407)Tablice (407)Inicjalizacja (408)Oznaczona inicjalizacja (C99) (412)Przypisywanie wartości do tablic (414)Zakres tablic (414)Określanie rozmiaru tablicy (416)Tablice wielowymiarowe (417)Inicjalizacja tablicy dwuwymiarowej (420)Więcej wymiarów (421)Wskaźniki do tablic (422)Funkcje, tablice i wskaźniki (425)Korzystanie z parametrów wskaźnikowych (428)Komentarz – wskaźniki i tablice (430)Działania na wskaźnikach (430)Ochrona zawartości tablicy (435)Zastosowanie słowa kluczowego const w parametrach formalnych (436)Więcej o const (437)Wskaźniki a tablice wielowymiarowe (439)Wskaźniki do tablic wielowymiarowych (442)Zgodność wskaźników (444)Funkcje a tablice wielowymiarowe (446)Tablice o zmiennym rozmiarze (VLA, ang. variable – length array) (449)Literały złożone (453)Zagadnienia kluczowe (456)Podsumowanie rozdziału (456)Pytania sprawdzające (458)Ćwiczenia (460)Rozdział 11. Łańcuchy znakowe i funkcje łańcuchowe (463)Reprezentacja łańcuchów i łańcuchowe wejście-wyjście (463)Definiowanie łańcuchów (464)Wskaźniki a łańcuchy (473)Wczytywanie łańcuchów (475)Tworzenie miejsca (475)Niesławna funkcja gets() (475)Alternatywy dla funkcji gets() (477)Funkcja scanf() (484)Wyświetlanie łańcuchów (486)Funkcja puts() (486)Funkcja fputs() (488)Funkcja printf() (488)Zrób to sam (489)Funkcje łańcuchowe (491)Funkcja strlen() (492)Funkcja strcat() (493)Funkcja strncat() (495)Funkcja strcmp() (496)Funkcje strcpy() i strncpy() (503)Funkcja sprintf() (508)Inne funkcje łańcuchowe (509)Przykład użycia. Sortowanie łańcuchów (512)Sortowanie wskaźników zamiast łańcuchów (513)Algorytm sortowania przez selekcję (514)Łańcuchy a funkcje znakowe z rodziny ctype.h (515)Argumenty wiersza poleceń (517)Argumenty wiersza poleceń w środowiskach zintegrowanych (519)Argumenty linii poleceń w systemie Macintosh (520)Konwersja łańcuchów do liczb (520)Zagadnienia kluczowe (523)Podsumowanie rozdziału (524)Pytania sprawdzające (525)Ćwiczenia (528)Rozdział 12. Klasy zmiennej, łączność i zarządzanie pamięcią (531)Klasy zmiennych (532)Zasięg zmiennej (533)Łączność zmiennej (535)Czas trwania zmiennej (537)Zmienne automatyczne (538)Zmienne rejestrowe (543)Zmienne statyczne o zasięgu blokowym (543)Zmienne statyczne o łączności zewnętrznej (545)Zmienne statyczne o łączności wewnętrznej (550)Programy wieloplikowe (551)Specyfikatory klasy zmiennych – podsumowanie (551)Klasy zmiennych a funkcje (554)Którą klasę wybrać? (555)Funkcje pseudolosowe i zmienne statyczne (555)Rzut kostką (559)Przydział pamięci. Funkcje malloc() i free() (563)Znaczenie funkcji free() (568)Funkcja calloc() (568)Dynamiczny przydział pamięci a tablice o zmiennym rozmiarze (569)Klasy zmiennych a dynamiczny przydział pamięci (570)Kwalifikatory typu ANSI C (572)Kwalifikator typu const (572)Kwalifikator typu volatile (575)Kwalifikator typu restrict (576)Kwalifikator _Atomic (C11) (577)Stare słowa kluczowe w nowych miejscach (578)Kluczowe zagadnienia (579)Podsumowanie rozdziału (579)Pytania sprawdzające (581)Ćwiczenia (582)Rozdział 13. Obsługa plików (587)Wymiana informacji z plikami (587)Czym jest plik? (588)Poziomy wejścia-wyjścia (590)Pliki standardowe (590)Standardowe wejście-wyjście (591)Sprawdzanie argumentów wiersza poleceń (592)Funkcja fopen() (593)Funkcje getc() i putc() (595)Znak końca pliku EOF (ang. end of file) (595)Funkcja fclose() (596)Wskaźniki do plików standardowych (597)Niewyszukany program kompresujący pliki (597)Plikowe wejście-wyjście – fprintf(), fscanf(), fgets() i fputs() (599)Funkcje fprintf() i fscanf() (599)Funkcje fgets() i fputs() (601)Przygody z dostępem swobodnym – fseek() i ftell() (602)Jak działają funkcje fseek() i ftell()? (603)Tryb binarny a tryb tekstowy (604)Przenośność (605)Funkcje fgetpos() i fsetpos() (606)Za kulisami standardowego wejścia-wyjścia (606)Inne standardowe funkcje wejścia-wyjścia (607)Funkcja int ungetc() (608)Funkcja int fflush() (608)Funkcja int setvbuf() (608)Binarne wejście-wyjście: fread() i fwrite() (609)Funkcja size_t fwrite() (611)Funkcja size_t fread() (611)Funkcje int feof(FILE *fp) oraz int ferror(FILE *fp) (612)Przykład (612)Dostęp swobodny w binarnym wejściu-wyjściu (615)Zagadnienia kluczowe (617)Podsumowanie rozdziału (618)Pytania sprawdzające (619)Ćwiczenia (621)Rozdział 14. Struktury i inne formy danych (625)Przykładowy problem. Tworzenie spisu książek (626)Deklaracja struktury (627)Definiowanie zmiennej strukturalnej (628)Inicjalizacja struktury (630)Odwołania do składników struktury (630)Inicjalizatory oznaczone struktur (631)Tablice struktur (632)Deklarowanie tablicy struktur (634)Wskazywanie składników tablicy struktur (634)Szczegóły programu (635)Struktury zagnieżdżone (636)Wskaźniki do struktur (638)Deklaracja i inicjalizacja wskaźnika do struktury (639)Dostęp do składników za pomocą wskaźnika (640)Struktury a funkcje (641)Przekazywanie składników struktur (641)Korzystanie z adresu struktury (642)Przekazywanie struktury jako argumentu (643)Więcej o nowym, ulepszonym statusie struktury (644)Struktury czy wskaźniki do struktur? (648)Tablice znakowe lub wskaźniki do znaków w strukturze (649)Struktury, wskaźniki i funkcja malloc() (650)Literały złożone i struktury (C99) (652)Elastyczne składniki tablicowe (C99) (654)Struktury anonimowe (C11) (657)Funkcje korzystające z tablic struktur (657)Zapisywanie zawartości struktury w pliku (659)Przykład zapisu struktury (660)Omówienie programu (663)Struktury. Co dalej? (664)Unie. Szybkie spojrzenie (665)Wykorzystywanie unii (666)Unie anonimowe (C11) (667)Typy wyliczeniowe (669)Stałe enum (670)Wartości domyślne (670)Przypisywane wartości (670)Użycie enum (670)Współdzielona przestrzeń nazw (672)typedef: szybkie spojrzenie (673)Udziwnione deklaracje (675)Funkcje a wskaźniki (677)Kluczowe zagadnienia (684)Podsumowanie rozdziału (685)Pytania sprawdzające (686)Ćwiczenia (689)Rozdział 15. Manipulowanie bitami (693)Liczby binarne, bity i bajty (694)Binarne liczby całkowite (694)Liczby całkowite ze znakiem (695)Binarne liczby zmiennoprzecinkowe (696)Inne systemy liczbowe (697)System ósemkowy (697)System szesnastkowy (698)Operatory bitowe (698)Bitowe operatory logiczne (699)Zastosowanie. Maski (701)Zastosowanie. Ustawianie bitów (włączanie bitów) (702)Zastosowanie. Zerowanie bitów (wyłączanie bitów) (702)Zastosowanie. Odwracanie bitów (703)Zastosowanie. Sprawdzenie wartości bitu (703)Bitowe operatory przesunięcia (704)Przykład (706)Kolejny przykład (708)Pola bitowe (710)Przykład (711)Pola bitowe a operatory bitowe (715)Mechanizmy wyrównania danych (C11) (722)Kluczowe zagadnienia (724)Podsumowanie rozdziału (725)Pytania sprawdzające (726)Ćwiczenia (727)Rozdział 16. Preprocesor i biblioteka C (731)Pierwsze kroki w translacji programu (732)Stałe symboliczne. #define (733)Tokeny (737)Przedefiniowywanie stałych (737)#define i argumenty (738)Argumenty makr w łańcuchach (741)Łącznik preprocesora. Operator ## (742)Makra o zmiennej liczbie argumentów: … i __VA_ARGS__ (743)Makro czy funkcja? (744)Dołączanie plików. #include (746)Pliki nagłówkowe. Przykład (747)Zastosowania plików nagłówkowych (749)Inne dyrektywy (750)Dyrektywa #undef (750)Zdefiniowany. Z perspektywy preprocesora C (751)Kompilacja warunkowa (751)Makra predefinio
ane (756)#line i #error (757)#pragma (758)Słowo kluczowe _Generic (C11) (759)Funkcje wplatane (C99) (761)Funkcje bezpowrotne (C11) (764)Biblioteka języka C (764)Uzyskiwanie dostępu do biblioteki C (764)Korzystanie z opisów funkcji (765)Biblioteka funkcji matematycznych (767)Odrobina trygonometrii (768)Warianty typów zmiennoprzecinkowych (770)Biblioteka tgmath.h (C99) (771)Biblioteka narzędzi ogólnego użytku (772)Funkcje exit() i atexit() (773)Funkcja qsort() (775)Biblioteka assert.h (780)Stosowanie asercji (780)_Static_assert (C11) (781)Funkcje memcpy() i memmove() z biblioteki string.h (782)Zmienna liczba argumentów. stdarg.h (785)Zagadnienie kluczowe (787)Podsumowanie rozdziału (788)Pytania sprawdzające (788)Ćwiczenia (790)Rozdział 17. Zaawansowana reprezentacja danych (793)Poznajemy reprezentację danych (794)Listy łączone (797)Korzystanie z listy łączonej (801)Refleksje (805)Abstrakcyjne typy danych (ATD) (806)Więcej abstrakcji (807)Budowanie interfejsu (808)Korzystanie z interfejsu (813)Implementacja interfejsu (815)Kolejki (822)Definicja kolejki jako abstrakcyjnego typu danych (822)Definicja interfejsu (823)Implementacja reprezentacji danych (824)Testowanie kolejki (832)Symulowanie za pomocą kolejki (834)Lista łączona czy tablica? (840)Drzewa binarne (844)Drzewo binarne jako ATD (846)Interfejs drzewa binarnego (846)Implementacja drzewa binarnego (849)Testowanie drzewa (863)Uwagi o drzewach (868)Co dalej? (869)Zagadnienia kluczowe (870)Podsumowanie rozdziału (871)Pytania sprawdzające (871)Ćwiczenia (872)Dodatek A. Odpowiedzi na pytania sprawdzające (875)Dodatek B. Dokumentacja (915)I. Lektura uzupełniająca (915)II. Operatory w języku C (919)III. Podstawowe typy i klasy zmiennych (925)IV. Wyrażenia, instrukcje i przepływ sterowania w programie (930)V. Standardowa biblioteka ANSI C oraz rozszerzenia standardu C99 i C11 (937)VI. Rozszerzone typy całkowite (987)VII. Obsługa rozszerzonych zbiorów znaków (991)VIII. Efektywniejsze obliczenia numeryczne w C99 i C11 (997)IX. Różnice między C a C++ (1006)Skorowidz (1013)O autorze: Stephen Prata wykłada astronomię, fizykę i informatykę w College of Marin w Kentfield w Kalifornii. Magisterium uzyskał na Politechnice Kalifornijskiej, a doktorat na Uniwersytecie Stanowym Kalifornii w Berkeley. Jest autorem i współautorem ponad tuzina książek wydanych przez The Waite Group, w tym książki „New C Primer Plus”, która uzyskała w 1990 roku nagrodę za najlepszy podręcznik komputerowy przyznawaną przez Stowarzyszenie Prasy Informatycznej oraz niniejszej, nominowanej do tej samej nagrody w roku 1991.

mieszkaniec torunia wspiął się, vcp wrocław, oferty pracy specjalista ds sprzedaży, anna pękala, energetyka rzeszów, excel dla zaawansowanych, lotniczy biznes gra, pozycjonowanie strony po angielsku, skomplikowany po angielsku, htm szczecin, justyna jankowska, sunrise system bydgoszcz, ksero morena, mateusz błaszczyk, liceum kosmetyczne wrocław

yyyyy