Język ANSI C
Programowanie
Drogi
Czytelniku, właśnie trzymasz w rękach nowe wydanie książki zaliczanej
do klasyki literatury informatycznej. Napisana przez autorów
języka ANSI C w najlepszy możliwy sposób przedstawia arkana
tego języka. A co można powiedzieć o samym języku? To też klasyka. To
język wymagający systematyczności i skupienia, ale dający w zamian
wiele możliwości i świetne wyniki. To najczęściej nauczany język
programowania - jego znajomość stanowi znakomity fundament do poznania
kolejnych, bardziej złożonych języków. Mimo swojego
zaawansowanego wieku jest on ceniony i w wielu dziedzinach wciąż
niezastąpiony.
Dzięki tej książce
zdobędziesz kompletną wiedzę na temat języka C.
Poznasz wszystkie dostępne typy, operatory i wyrażenia. Nauczysz się
sterować wykonywaniem programu oraz wykorzystywać funkcje. Ponadto
dogłębnie poznasz coś, co sprawia początkującym programistom najwięcej
problemów - wskaźniki. Następnie zapoznasz się także z
funkcjami wejścia i wyjścia. Dowiesz się, jak uzyskać dostęp do
plików, formatować dane wyjściowe oraz obsługiwać błędy.
Książka ta jest bogata w przykłady, a każdy z nich został przetestowany
przez autorów. Język ANSI C. Programowanie. Wydanie II to
niezastąpiona pozycja na półce każdego studenta informatyki,
pasjonata programowania i zawodowca. Wraz z książką został wydany
zeszyt zawierający rozwiązania do wszystkich zawartych w niej ćwiczeń.
- Zmienne i wyrażenia
arytmetyczne w języku C
- Kompilowanie kodu
- Wykorzystanie preprocesora
języka C
- Typy i operatory
- Metody sterowania
wykonywaniem programu
- Wykorzystanie funkcji
- Struktura programu
- Zasada działania
wskaźników
- Struktury danych
- Operacje wejścia i wyjścia
- Zastosowanie rekurencji
Przedmowa
Przedmowa do pierwszego wydania
Wstęp
Rozdział 1.
Wprowadzenie
1.1. Pierwsze kroki
1.2. Zmienne i wyrażenia arytmetyczne
1.3. Instrukcja for
1.4. Stałe symboliczne
1.5. Znakowe operacje wejścia-wyjścia
1.5.1. Kopiowanie plików
1.5.2. Zliczanie znaków
1.5.3. Zliczanie wierszy
1.5.4. Zliczanie słów
1.6. Tablice
1.7. Funkcje
1.8. Argumenty przekazywanie jako wartość
1.9. Tablice znaków
1.10. Zmienne zewnętrzne i zakres zmiennych
Rozdział 2
.
Typy, operatory i wyrażenia
2.1. Nazwy zmiennych
2.2. Typy danych i ich rozmiar
2.3. Stałe
2.4. Deklaracje
2.5. Operatory arytmetyczne
2.6. Operatory porównania i logiczne
2.7. Konwersja typów
2.8. Inkrementacja i dekrementacja
2.9. Operatory bitowe
2.10. Operatory i wyrażenia przypisania
2.11. Wyrażenia warunkowe
2.12. Priorytety operatorów i kolejność wykonywania obliczeń
Rozdział 3.
Sterowanie
wykonywaniem programu
3.1. Instrukcje i bloki
3.2. if-else
3.3. else-if
3.4. switch
3.5. Pętle while i for
3.6. Pętla do-while
3.7. break i continue
3.8. goto i etykiety
Rozdział 4.
Funkcje
i struktura programu
4.1. Funkcje podstawy
4.2. Zwracanie wartości innych niż int
4.3. Zmienne zewnętrzne
4.4. Zakres
4.5. Pliki nagłówkowe
4.6. Zmienne statyczne
4.7. Zmienne rejestrowe
4.8. Struktura blokowa
4.9. Inicjalizacja
4.10. Rekurencja
4.11. Preprocesor języka C
4.11.1. Wstawianie plików
4.11.2. Makra
4.11.3. Warunkowe wstawianie kodu
Rozdział 5.
Wskaźniki
i tablice
5.1. Wskaźniki i adresy
5.2. Wskaźniki i argumenty funkcji
5.3. Wskaźniki i tablice
5.4. Arytmetyka adresów
5.5. Wskaźniki znakowe i funkcje
5.6. Tablice wskaźników, wskaźniki do wskaźników
5.7. Tablice wielowymiarowe
5.8. Inicjalizacja tablic wskaźników
5.9. Wskaźniki a tablice wielowymiarowe
5.10. Argumenty wiersza poleceń
5.11. Wskaźniki do funkcji
5.12. Rozbudowane deklaracje zmiennych i funkcji
Rozdział 6.
Struktury
6.1. Struktury podstawy
6.2. Struktury i funkcje
6.3. Tablice struktur
6.4. Wskaźniki do struktur
6.5. Struktury cykliczne (odwołujące się do siebie)
6.6. Wyszukiwanie w tabelach
6.7. typedef
6.8. union
6.9. Pola bitowe
Rozdział 7.
Wejście
i wyjście
7.1. Standardowe operacje wejścia-wyjścia
7.2. printf formatowanie danych wyjściowych
7.3. Listy argumentów o zmiennej długości
7.4. scanf formatowane dane wejściowe
7.5. Dostęp do plików
7.6. stderr i exit obsługa błędów
7.7. Wierszowe operacje wejścia-wyjścia
7.8. Inne funkcje
7.8.1. Operacje na ciągach znakowych
7.8.2. Wykrywanie i konwersja klas znaków
7.8.3. ungetc
7.8.4. Wywoływanie poleceń systemowych
7.8.5. Zarządzanie pamięcią
7.8.6. Funkcje matematyczne
7.8.7. Generowanie liczb losowych
Rozdział 8.
Interfejs systemu UNIX
8.1. Deskryptory plików
8.2. Niskopoziomowe operacje wejścia-wyjścia odczyt i zapis
8.3. open, creat, close, unlink
8.4. lseek dostęp swobodny
8.5. Przykład implementacja fopen i getc
8.6. Przykład listy zawartości katalogów
8.7. Przykład mechanizm alokacji pamięci
Dodatek A.
Opis
języka C
A.1. Wprowadzenie
A.2. Konwencje leksykalne
A.2.1. Jednostki leksykalne
A.2.2. Komentarze
A.2.3. Identyfikatory
A.2.4. Słowa kluczowe
A.2.5. Stałe
A.2.5.1. Stałe całkowite
A.2.5.2. Stałe znakowe
A.2.5.3. Stałe zmiennoprzecinkowe
A.2.5.4. Stałe wyliczeniowe
A.2.6. Literały ciągów znakowych
A.3. Zapis składni
A.4. Identyfikatory obiektów
A.4.1. Klasa pamięci
A.4.2. Podstawowe typy danych
A.4.3. Pochodne typy danych
A.4.4. Kwalifikatory typów
A.5. Obiekty i L-wartości
A.6. Konwersje
A.6.1. Promocja typów całkowitoliczbowych
A.6.2. Konwersje całkowitoliczbowe
A.6.3. Liczby całkowite i liczby zmiennoprzecinkowe
A.6.4. Typy zmiennoprzecinkowe
A.6.5. Konwersje arytmetyczne
A.6.6. Wskaźniki i liczby całkowite
A.6.7. void
A.6.8. Wskaźniki do void
A.7. Wyrażenia
A.7.1. Generowanie wskaźników
A.7.2. Wyrażenia proste
A.7.3. Wyrażenia postfiksowe
A.7.3.1. Odwołania do tablic
A.7.3.2. Wywołania funkcji
A.7.3.3. Odwołania do struktur
A.7.3.4. Inkrementacja postfiksowa
A.7.4. Operatory unarne
A.7.4.1. Prefiksowe operatory inkrementacji
A.7.4.2. Operator adresu
A.7.4.3. Operator dereferencji
A.7.4.4. Unarny operator plus
A.7.4.5. Unarny operator minus
A.7.4.6. Operator uzupełnienia jedynkowego
A.7.4.7. Operator negacji logicznej
A.7.4.8. Operator sizeof
A.7.5. Konwersje typów
A.7.6. Operatory multiplikatywne
A.7.7. Operatory addytywne
A.7.8. Operatory przesunięcia
A.7.9. Operatory porównania
A.7.10. Operatory równości
A.7.11. Bitowy operator AND
A.7.12. Bitowy operator XOR
A.7.13. Bitowy operator OR
A.7.14 Logiczny operator AND (koniunkcja)
A.7.15. Logiczny operator OR (alternatywa)
A.7.16. Operator warunkowy
A.7.17. Wyrażenia przypisania
A.7.18. Operator przecinkowy
A.7.19. Wyrażenia o stałej wartości
A.8. Deklaracje
A.8.1. Specyfikatory klasy pamięci
A.8.2. Specyfikatory typów
A.8.3. Deklaracje struktur i unii
A.8.4. Enumeracje (wyliczenia)
A.8.5. Deklaratory
A.8.6. Znaczenie deklaratorów
A.8.6.1. Deklaratory wskaźników
A.8.6.2. Deklaratory tablic
A.6.3. Deklaratory funkcji
A.8.7. Inicjalizacja
A.8.8. Nazwy typów
A.8.9. Nazwy typedef
A.8.10. Równoważność typów
A.9. Instrukcje
A.9.1. Instrukcje z etykietami
A.9.2. Instrukcja wyrażeniowa
A.9.3. Instrukcja złożona
A.9.4. Instrukcje wyboru
A.9.5. Instrukcje powtarzania
A.9.6. Instrukcje skoku
A.10. Deklaracje zewnętrzne
A.10.1. Definicje funkcji
A.10.2. Deklaracje zewnętrzne
A.11. Zakres i wiązanie
A.11.1. Zakres leksykalny
A.11.2. Wiązanie
A.12. Przetwarzanie wstępne
A.12.1. Sekwencje trzyznakowe
A.12.2. Łączenie wierszy
A.12.3. Definiowanie i substytucja makr
A.12.4. Włączanie plików do kompilacji
A.12.5. Kompilacja warunkowa
A.12.6. Dyrektywa line
A.12.7. Generowanie błędów
A.12.8. Dyrektywa pragma
A.12.9. Dyrektywa pusta
A.12.10. Nazwy predefiniowane
A.13. Gramatyka
Dodatek B.
Standardowa biblioteka języka C
B.1. Wejście i wyjście:
B.1.1. Operacje plikowe
B.1.2. Formatowane dane wyjściowe
B.1.3. Formatowane dane wejściowe
B.1.4. Znakowe funkcje wejścia-wyjścia
B.1.5. Bezpośrednie funkcje wejścia-wyjścia
B.1.6. Funkcje określające pozycję w pliku
B.1.7. Funkcje obsługi błędów
B.2. Wykrywanie klas znaków:
B.3. Ciągi znakowe:
B.4. Funkcje matematyczne:
B.5. Funkcje narzędziowe:
B.6. Diagnostyka:
B.7. Listy argumentów o zmiennej długości:
B.8. Skoki odległe:
B.9. Sygnały:
B.10. Data i godzina:
B.11. Ograniczenia określane przez implementację: i
Dodatek C.
Podsumowanie
zmian
328
stron, oprawa twarda