Linux - Friheden til at programmere i C

Programmering med GNU/Linux

Version 2.0.20041104 - 2020-12-31

Donald J. Axel

SSLUG, Skåne Sjælland Linux User Group

Forskellige programmeringsteknikker illustreret med eksempler, mest for C programmører med lidt erfaring, men begyndere kan bladre om i Appendix A og se, om det er noget for dem.


Indholdsfortegnelse
Forord
1. Oversigt over bogen
2. Om forfatteren og bogens historie
3. Linux-bøgerne
4. Ophavsret
5. Vi siger tak for hjælpen
6. Typografi
1. Repræsentation og modeller
1.1. Et professionelt værksted
1.1.1. Hvad er en debugger?
1.1.2. Biblioteker - et eksempel
1.1.3. Hvordan kommer man igang?
1.2. Repræsentation af data
1.3. Repræsentation af tal
1.4. Simulering - Modeller
1.5. Planlægning af et program
2. Funktioner, modularitet og relevante teknikker
2.1. ANSI prototyper og modularitet
2.1.1. Et brohoved.
2.1.2. Returværdi fra en funktion
2.2. Parameterlister og datatyper
2.2.1. Datatyper og beregninger
2.2.2. Prompt og input
2.3. ANSI prototyper og modularisering
2.3.1. Kursomregning
2.4. Filter programmer
2.4.1. Tegn og talværdier
2.4.2. Et typisk filter
2.4.3. Oversætter - teknik, forstadium
2.4.4. Summering af tal i en fil.
2.5. Analyse af input
2.5.1. En tag - parser
2.5.2. Tjek balancering af tags
2.5.3. Any-tag
2.5.4. Skelnen mellem tagtyper
2.5.5. Tilstandsvariabel
2.6. Fejl og håndteringen af dem.
2.6.1. Hvilke slags fejl er interessante
2.7. Flere små programmer og øvelsesforslag.
2.7.1. Tal formatering ved udskrift med printf.
2.7.2. Word count - med tak til Kernighan & Ritchie
2.8. Øvelser
2.8.1. Forslag til beregningsøvelser
3. Sammensatte datatyper og hvad man kan med dem i C
3.1. Sammensætning af flere oplysninger til en enhed
3.1.1. En struct
3.1.2. Interface til datatype
3.1.3. Tabel, array, liste, sekvens, bunke ...
3.1.4. Operationer på datatypen
3.2. Konkrete og abstrakte datatyper
3.3. FILE: En abstrakt type
4. Parsning - hvordan oversættes et C program
4.1. En declaration parser
4.2. En expression parser
4.3. En komplet compiler
4.3.1. uC - en mikroskopisk C compiler
4.4. Tilstandsmaskiner
A. Crash course i C sproget
A.1. C i få ord
A.1.1. Data typer
A.1.2. Operatorer
A.1.3. Flow kontrol
A.1.4. Modularitet
A.2. Lager klassifikation, storage classes
A.2.1. Externe variable, funktioner og konstanter
A.2.2. Storage specifications
A.2.3. Konstanter og memory protection
A.2.4. Storage specifikation og scope
A.2.5. Kontrolvariable for løkker eller loops
A.2.6. Flygtige ukontrollerede variable
A.2.7. Oversigt over variabel - anvendelse
A.3. GNU programmerings værktøjer
A.3.1. GNU C Compiler options
A.3.2. objdump eksempler
B. Revisionshistorie for bogen
C. Nyt i C99
C.1. Uddrag af nyheder i ANSI revisionen fra 1999
C.2. Liste i tilfældig rækkefølge
C.3. Nyt i C93 (AM1)
Stikordsregister
Figurliste
1. Donald Axel
2. ÅDL
1-1. glade, en GTK+ GUI generator.
1-2. glade, projekt vindue.
2-1. Eksempel på fejlhåndtering, informativ besked
3-1. Binært træ
Eksempelliste
1-1. tallene fra 0 til 7 og 0 til -7.
1-2. tallene fra 0 til 7 og 0 til -7.
2-1. HELLO - statuskode
2-2. Skriv message på standard output.
2-3. En character pointer
2-4. HELLO - beregning.
2-5. Input og beregning.
2-6. Dollar omregning, spaghetti [1] version.
2-7. Dollar omregning med beregning i funktion.
2-8. Dollar omregning, modul version.
2-9. kr2dollar modul.
2-10. Dollar omregning, double version.
2-11. kr2dollar, return type double, module.
2-12. Header fil for kr2dollar
2-13. Simpelt filter, input til output.
2-14. Filter, som skriver ascii ordinal value.
2-15. Simpelt filter som character counter.
2-16. Codepage 865 til iso8859-1, forstadium.
2-17. Terrasse 2
2-18. Terrasse 3
2-19. mime afkodning, std.input
2-20. Mime afkodning, fil input
2-21. Filter som konverterer linjer med tal til summen af tallene.
2-22. En tag - parser, forstadium
2-23. Tjek om sgml-tags balancerer
2-24. Udvidelse af parse-level1 med kendte tag-typer
2-25. Ord - tælling
2-26. Tallene fra 0 til 7 i hexadecimal notation.
2-27. Simpel ordtælling
3-1. En struct
3-2. Definition af en tomat-variabel
3-3. Struct type ved hjælp af typedef
3-4. Erklæring og definition
3-5. Udvælgelse af oplysninger
3-6. Kort-bunke
3-7. Start punkt for kortbunke
3-8. Kompilering af samme program med C og C++ oversættere
3-9. Talklasse - en abstraktion
3-10. FILE typen
4-1. Calculator, recursive descent expression parsing
4-2. Assembler programmering
4-3. Output fra GNU-C oversætter
4-4. uC oversættelse
4-5. C oversætter, parsning på øverste niveau
A-1. Hello world! programmet.
A-2. Hello, World! med type-specifikationer.
A-3. Enumeration
A-4. Union
A-5. Operator Præcedens
A-6. Simpel kryptering
A-7. Konstant streng
A-8. Scope eller synlighed
A-9. Extern declaration
A-10. En lokal kontrol variabel