POLECAMY
Wydawca:
Format:
epub, mobi, ibuk
Książka przeznaczona jest dla programistów, którzy chcą, aby ich programy działały dobrze, czyli szybko zwracały wyniki, zużywały mało pamięci i obejmowały szeroki zakres danych wejściowych. Programista początkujący znajdzie tutaj wyjaśnienia podstawowych elementów języka C, a czytelnik zaawansowany dowie się, jak może udoskonalić swój warsztat.
Czytelnik tej książki nauczy się pisać funkcje działające oszczędnie i wydajnie, np. funkcję, która znajduje liczby pierwsze 56 razy większe niż przykłady podawane w standardowych kursach programowania, a przy tym czyni to 7 razy szybciej.
Dowie się, jak poprawnie tworzyć programy sterowane argumentami wywołania. Nauczy się, jak zautomatyzować proces budowania programów złożonych. Będzie potrafił przetwarzać wyrażenia regularne, czy też stworzyć interpreter poleceń podanych w języku naturalnym.
Stanie się dobrym programistą.
Rok wydania | 2016 |
---|---|
Liczba stron | 236 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-19047-7 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
POLECAMY
Ciekawe propozycje
Spis treści
Wstęp | 13 |
Przygotowanie środowiska pracy | 14 |
Instalacja systemu Linux | 15 |
Pobranie OpenSUSE | 15 |
Przygotowanie instalacji | 15 |
Instalacja | 15 |
Uruchamianie programów | 16 |
Edycja kodu źródłowego | 16 |
Przejście do trybu tekstowego | 16 |
Skompilowanie programu | 17 |
Uruchomienie programu | 17 |
Polecane źródła w Internecie | 17 |
Część I | 19 |
Lekcja 1. Optymalizowanie funkcji | 21 |
Elementy matematyki | 21 |
Podstawy języka C | 22 |
Program, instrukcja | 22 |
Komentarze | 23 |
Identyfikatory | 23 |
Słowa kluczowe | 23 |
Białe znaki | 23 |
Podstawowe typy numeryczne | 24 |
Zmienne i operator przypisania | 25 |
Operatory | 26 |
Instrukcja warunkowa | 27 |
Instrukcje pętli | 28 |
Pętla while | 28 |
Pętla do while | 29 |
Pętla for | 29 |
Funkcje | 30 |
Funkcje rekurencyjne | 31 |
Rozwiązanie zadania | 32 |
Krok 1. Pierwsze zadanie pomocnicze | 32 |
Krok 2. Rachunki matematyczne | 32 |
Krok 3. Drugie zadanie pomocnicze | 33 |
Krok 4. Uogólnienie rachunków | 34 |
Krok 5. Pierwsza wersja kodu funkcji rozwiązującej zadanie | 34 |
Krok 6. Dodanie warunku zakończenia rekurencji | 35 |
Krok 7. Optymalizacja liczby operacji | 35 |
Krok 8. Optymalizacja liczby zmiennych | 36 |
Krok 9. Usunięcie rekurencji | 36 |
Krok 10. Sprawdzenie poprawności argumentów | 38 |
Wnioski | 39 |
Polecane źródła w Internecie | 39 |
Lekcja 2. Działania na bitach | 41 |
Sito Eratostenesa | 41 |
Podstawy Języka C | 41 |
Operacje na bitach | 41 |
Operacja and | 42 |
Operacja or | 42 |
Operacja xor | 42 |
Operacja not | 42 |
Przesunięcie bitowe w lewo | 42 |
Przesunięcie bitowe w prawo | 43 |
Rzutowanie | 43 |
Dyrektywy preprocesora | 44 |
Tablice | 45 |
Adresy zmiennych | 46 |
Wskaźniki | 47 |
Wskaźniki a tablice | 48 |
Alokowanie pamięci dla tablicy | 49 |
Rozwiązanie zadania | 50 |
Krok 1. Podejście standardowe | 50 |
Krok 2. Zmniejszenie liczby operacji | 51 |
Krok 3. Oszczędność pamięci | 52 |
Krok 4. Poprawa efektywności algorytmu | 57 |
Wnioski | 58 |
Polecane źródła w Internecie | 59 |
Podstawy informatyki | 61 |
Lekcja 3. Alokowanie pamięci | 61 |
Podstawy języka C | 62 |
Funkcja malloc() | 62 |
Funkcja calloc() | 63 |
Funkcja realloc() | 64 |
Funkcja free() | 64 |
Przykład zarządzania pamięcią | 65 |
Zmienne automatyczne i statyczne | 66 |
Rozwiązanie zadania | 67 |
Wnioski | 72 |
Polecane źródła w Internecie | 72 |
Część II | 73 |
Lekcja 4. Program główny | 75 |
Podstawy języka C | 75 |
Funkcja main() | 75 |
Funkcja exit () | 75 |
Standardowe strumienie wejścia i wyjścia | 76 |
Napisy | 76 |
Konwersja napisu do liczby | 77 |
Rozwiązanie zadania | 78 |
Krok 1. Zadanie pomocnicze | 78 |
Krok 2. Unikanie prostych błędów | 80 |
Krok 3. Zastosowanie nazwy programu | 81 |
Krok 4. Obsługa opcji | 83 |
Krok 5. Wyświetlenie komunikatu o błędzie | 85 |
Krok 6. Zastosowanie zmiennych środowiskowych | 85 |
Wnioski | 86 |
Polecane źródła w Internecie | 86 |
Lekcja 5. Przetwarzanie opcji | 87 |
Podstawy języka C | 87 |
Przekazywanie argumentów funkcji | 87 |
Instrukcja wielokrotnego wyboru: switch | 89 |
Standardowe opcje programu | 90 |
Rozwiązanie zadania | 90 |
Wnioski | 94 |
Polecane źródła w Internecie | 94 |
Lekcja 6. Przetwarzanie parametrów wejściowych – plików | 95 |
Podstawy języka C | 95 |
Odczyt i zapis do pliku | 95 |
Trójargumentowy operator warunkowy | 98 |
Sterowanie preprocesorem | 98 |
Prototyp funkcji | 98 |
Atrybut extern | 100 |
Kompilacja programu | 102 |
Rozwiązanie zadania | 103 |
Krok 1. Rozdzielenie kompetencji między funkcje | 103 |
Krok 2. Rozdzielenie kompetencji między pliki | 106 |
Krok 3. Utworzenie plików nagłówkowych | 108 |
Krok 4. Przetwarzanie danych wejściowych | 109 |
Krok 5. Kompilacja | 110 |
Aneks | 111 |
Polecane źródła w Internecie | 116 |
Część III | 117 |
Lekcja 7. Debugowanie programu | 119 |
Na czym polega debugowanie | 119 |
Podstawy języka C | 120 |
Buforowanie | 120 |
Wyrażenie przecinkowe | 121 |
Funkcja char() | 121 |
Rozwiązanie zadania | 122 |
Krok 1. Wydruki kontrolne w kodzie programu | 122 |
Krok 2. Zastosowanie makra | 124 |
Krok 3. Makro ze zmienną liczbą parametrów | 126 |
Krok 4. Debugowanie wybierane dynamicznie | 128 |
Krok 5. Obsługa parametru wywołania +d | 130 |
Wnioski | 131 |
Aneks | 132 |
Modyfikacje w funkcji set_opt() | 132 |
Modyfikacje w funkcji main() | 132 |
Modyfikacja wypisywania pomocy rozszerzonej | 133 |
Polecane źródła w Internecie | 133 |
Lekcja 8. Budowanie złożonych programów | 135 |
Podstawy teoretyczne | 135 |
Struktura pliku Makefile | 135 |
Rozwiązanie zadania | 136 |
Krok 1. Tworzenie pliku Makefile | 136 |
Deklaracje zmiennych | 136 |
Reguły kompilacji | 137 |
Krok 2. Optymalizacja pliku Makefile | 138 |
Krok 3. Realizowanie celów specjalnych | 139 |
make clean | 139 |
make distclean | 140 |
make dist | 140 |
make install | 142 |
Krok 4. Sprawdzenie poprawności listy zależności | 142 |
Wnioski | 143 |
Polecane źródła w Internecie | 143 |
Lekcja 9. Udostępnianie programu | 145 |
Narzędzia do udostępniania programów | 145 |
Krok 1. Skanowanie katalogu | 145 |
Krok 2. Edytowanie pliku configure.ac | 146 |
Krok 3. Edytowanie pliku config.h.in | 149 |
Krok 4. Edytowanie pliku makefile.in | 149 |
Krok 5. Wywołanie programu autoconf | 149 |
Krok 6. Uruchomienie programu configure | 150 |
Krok 7. Korzystanie z pliku config.h | 152 |
Krok 8 Budowanie programu | 152 |
Krok 9. Dystrybucja | 153 |
Wnioski | 153 |
Polecane źródła w Internecie | 153 |
Część IV | 156 |
Lekcja 10. Dynamiczne struktury danych | 157 |
Funkcje rekurencyjne | 157 |
Rekurencyjne struktury danych | 159 |
Dynamiczne struktury danych | 160 |
Listy | 160 |
Drzewa binarne | 162 |
Porównanie przetwarzania list i drzew | 163 |
Realizacja dynamicznych struktur danych w języku C | 164 |
Struktury | 164 |
Rozwiązanie zadania | 165 |
Reprezentacja węzła drzewa | 165 |
Krok 1 Tworzenie drzewa | 166 |
Krok 2. Wstawianie elementu na początek i na koniec listy | 168 |
Krok 3. Zamiana drzewa na listę | 170 |
Krok 4. Zamiana listy na drzewo | 175 |
Krok 5. Wypisywanie zawartości drzewa | 180 |
Krok 6. Wyszukiwanie informacji w drzewie | 181 |
Krok 7. Optymalizacja wyszukiwania | 181 |
Krok 8. Baza z wieloma kluczami | 182 |
Wnioski | 183 |
Polecane źródła w Internecie | 183 |
Lekcja 11. Wyrażenia regularne | 185 |
Automaty skończone | 185 |
Wyrażenia regularne | 187 |
Metaznaki | 188 |
Rozpoznawanie wyrażeń regularnych | 189 |
Rozwiązanie zadania | 189 |
Krok 1. Sformułowanie zadania dla konkretnego zastosowania | 189 |
Krok 2. Budowanie tablicy sterującej | 190 |
Wnioski | 197 |
Polecane źródła w Internecie | 198 |
Lekcja 12. Interpreter poleceń | 199 |
Gramatyki formalne | 200 |
Narzędzia informatyczne | 201 |
Generator parsera yacc | 202 |
Deklaracje języka C | 203 |
Deklaracje parsera | 203 |
Reguły gramatyki | 203 |
Kod dodatkowy | 204 |
Generator leksera lex | 204 |
Reguły leksykalne | 205 |
Rozwiązanie zadania | 205 |
Krok 1. Tworzenie pliku mag.y | 205 |
Krok 2. Generowanie parsera | 207 |
Krok 3. Tworzenie pliku mag.l | 208 |
Krok 4. Generowanie analizatora leksykalnego | 209 |
Krok 5. Tworzenie prostego programu głównego | 210 |
Krok 6. Modyfikacja pliku Makefile | 212 |
Krok 7. Wywołanie funkcji yyparse() w pętli | 213 |
Krok 8. Sterowanie reakcjami systemu | 215 |
Modyfikacja leksera | 217 |
Modyfikacja funkcji main() | 217 |
Modyfikacja parsera | 218 |
Krok 9. Rozwijanie interpretera | 222 |
Krok 10. Rozwiązywanie konfliktów | 225 |
Wnioski | 226 |
Polecane źródła w Internecie | 227 |
Pliki towarzyszące książce | 229 |
Skorowidz | 233 |