==== 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 Ophavsret © 2000-2005 Forfatteren har ophavsret til bogen, men udgiver den under "Åben dokumentlicens (ÅDL) - version 1.0". 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** [[c:c-forord|Forord]]1.[[c:c-forord#c-oversigt-over-bogen|Oversigt over bogen]]2.[[c:c-omos|Om forfatteren og bogens historie]]3.[[c:c-linuxbog-serien|Linux-bøgerne]]4.[[c:c-ophavsret|Ophavsret]]5.[[c:c-tak|Vi siger tak for hjælpen]]6.[[c:c-typografi|Typografi]]1.[[c:c-intro|Repræsentation og modeller]]1.1.[[c:c-intro#c-prof-vaerksted|Et professionelt værksted]]1.1.1.[[c:c-intro#hvad-er-debugger|Hvad er en debugger?]]1.1.2.[[c:c-intro#bib-eksempel|Biblioteker - et eksempel]]1.1.3.[[c:c-intro#hvordan-i-gang|Hvordan kommer man igang?]]1.2.[[c:repraesentation-af-data|Repræsentation af data]]1.3.[[c:repraesentation-af-tal|Repræsentation af tal]]1.4.[[c:simulering-modeller|Simulering - Modeller]]1.5.[[c:c-program-planlaegning|Planlægning af et program]]2.[[c:c-programmering-start|Funktioner, modularitet og relevante teknikker]]2.1.[[c:c-programmering-start#tour|ANSI prototyper og modularitet]]2.1.1.[[c:c-programmering-start#brohoved|Et brohoved.]]2.1.2.[[c:c-programmering-start#sect-return-value|Returværdi fra en funktion]]2.2.[[c:s1-datatyper|Parameterlister og datatyper]]2.2.1.[[c:s1-datatyper#sect-beregning|Datatyper og beregninger]]2.2.2.[[c:s1-datatyper#prompt-og-input|Prompt og input]]2.3.[[c:s1-modular-beregning|ANSI prototyper og modularisering]]2.3.1.[[c:s1-modular-beregning#s2-modularisering|Kursomregning]]2.4.[[c:filter-programmer|Filter programmer]]2.4.1.[[c:filter-programmer#tegn-og-tal|Tegn og talværdier]]2.4.2.[[c:filter-programmer#c-typisk-filter|Et typisk filter]]2.4.3.[[c:filter-programmer#sect-oversaetter-forstadium|Oversætter - teknik, forstadium]]2.4.4.[[c:filter-programmer#sect-file-adder|Summering af tal i en fil.]]2.5.[[c:sect-parser-programmer|Analyse af input]]2.5.1.[[c:sect-parser-programmer#sect-tag-parser|En tag - parser]]2.5.2.[[c:sect-parser-programmer#sect-recursion|Tjek balancering af tags]]2.5.3.[[c:sect-parser-programmer#sect-tagbal01.c|Any-tag]]2.5.4.[[c:sect-parser-programmer#sect-tagtyper|Skelnen mellem tagtyper]]2.5.5.[[c:sect-parser-programmer#sect-intelligent-wordcount|Tilstandsvariabel]]2.6.[[c:fejl-og-haandtering|Fejl og håndteringen af dem.]]2.6.1.[[c:fejl-og-haandtering#fejl-kategorier|Hvilke slags fejl er interessante]]2.7.[[c:outformat1|Flere små programmer og øvelsesforslag.]]2.7.1.[[c:outformat1#hello-tal-format|Tal formatering ved udskrift med printf.]]2.7.2.[[c:outformat1#cprog-hello-wordcount|Word count - med tak til Kernighan & Ritchie]]2.8.[[c:cprog-oevelser|Øvelser]]2.8.1.[[c:cprog-oevelser#cprog-hello-beregninger|Forslag til beregningsøvelser]]3.[[c:c-objekt-orienteret-tankegang|Sammensatte datatyper og hvad man kan med dem i C]]3.1.[[c:c-objekt-orienteret-tankegang#c-sammensaet-oplysninger|Sammensætning af flere oplysninger til en enhed]]3.1.1.[[c:c-objekt-orienteret-tankegang#sect-sammensatte-datatyper|En //struct//]]3.1.2.[[c:c-objekt-orienteret-tankegang#sect-interface|Interface til datatype]]3.1.3.[[c:c-objekt-orienteret-tankegang#c-tabel-array|Tabel, array, liste, sekvens, bunke ...]]3.1.4.[[c:c-objekt-orienteret-tankegang#c-operationer|Operationer på datatypen]]3.2.[[c:sect-oo-metoder|Konkrete og abstrakte datatyper]]3.3.[[c:sect-abstract-datatypes|FILE: En abstrakt type]]4.[[c:c-parser-tilstandsmaskine|Parsning - hvordan oversættes et C program]]4.1.[[c:c-parser-tilstandsmaskine#declaration-parser|En declaration parser]]4.2.[[c:expression-parser|En expression parser]]4.3.[[c:sect-ucc|En komplet compiler]]4.3.1.[[c:sect-ucc#uC-compiler|uC - en mikroskopisk C compiler]]4.4.[[c:tilstandsmaskiner|Tilstandsmaskiner]]A.[[c:a-crash|Crash course i C sproget]]A.1.[[c:a-crash#C-hvad-er|C i få ord]]A.1.1.[[c:a-crash#crash-datatyper|Data typer]]A.1.2.[[c:a-crash#operatorer|Operatorer]]A.1.3.[[c:a-crash#flow-kontrol|Flow kontrol]]A.1.4.[[c:a-crash#modularitet|Modularitet]]A.2.[[c:sect-c-fundamentet|Lager klassifikation, storage classes]]A.2.1.[[c:sect-c-fundamentet#c-eksterne-variable|Externe variable, funktioner og konstanter]]A.2.2.[[c:sect-c-fundamentet#sect-storage-spec|Storage specifications]]A.2.3.[[c:sect-c-fundamentet#c-konstanter|Konstanter og memory protection]]A.2.4.[[c:sect-c-fundamentet#sect-scope|Storage specifikation og scope]]A.2.5.[[c:sect-c-fundamentet#c-kontrolvariable|Kontrolvariable for løkker eller loops]]A.2.6.[[c:sect-c-fundamentet#c-ukontrollerede-variable|Flygtige ukontrollerede variable]]A.2.7.[[c:sect-c-fundamentet#c-oversigt-variabel|Oversigt over variabel - anvendelse]]A.3.[[c:sect-gnu-tools|GNU programmerings værktøjer]]A.3.1.[[c:sect-gnu-tools#gnu-c-options|GNU C Compiler options]]A.3.2.[[c:sect-gnu-tools#c-objdump-eksempler|objdump eksempler]]B.[[c:c-apprevhist|Revisionshistorie for bogen]]C.[[c:app-new-c99|Nyt i C99]]C.1.[[c:app-new-c99#sect-C99-kommentar|Uddrag af nyheder i ANSI revisionen fra 1999]]C.2.[[c:c-tilfaeldig-liste|Liste i tilfældig rækkefølge]]C.3.[[c:sect-c93|Nyt i C93 (AM1)]][[c:stikord|Stikordsregister]] **Figurliste** 1.[[c:c-omos#donald-c-fig|Donald Axel]]2.[[c:c-ophavsret#AEN124|ÅDL]]1-1.[[c:c-intro#fig-glade-palet|glade, en GTK+ GUI generator.]]1-2.[[c:c-intro#fig-glade-canvas|glade, projekt vindue.]]2-1.[[c:fejl-og-haandtering#fig-fejl-fil-mangler|Eksempel på fejlhåndtering, informativ besked]]3-1.[[c:c-objekt-orienteret-tankegang#c-bintrae|Binært træ]] **Eksempelliste** 1-1.[[c:repraesentation-af-tal#ex-tal-0-7|tallene fra 0 til 7 og 0 til -7.]]1-2.[[c:repraesentation-af-tal#ex-numrep1|tallene fra 0 til 7 og 0 til -7.]]2-1.[[c:c-programmering-start#ex-hello|HELLO - statuskode]]2-2.[[c:c-programmering-start#ex-stdout|Skriv message på standard output.]]2-3.[[c:c-programmering-start#ex-char-ptr|En character pointer]]2-4.[[c:s1-datatyper#ex-hello-beregning|HELLO - beregning.]]2-5.[[c:s1-datatyper#ex-io-ber|Input og beregning.]]2-6.[[c:s1-modular-beregning#ex-dollar-omregning|Dollar omregning, spaghetti]][[c:index#FTN.AEN676|[1]]]version.2-7.[[c:s1-modular-beregning#ex-dollar-funktion|Dollar omregning med beregning i funktion.]]2-8.[[c:s1-modular-beregning#ex-dollar-int-main|Dollar omregning, modul version.]]2-9.[[c:s1-modular-beregning#ex-dollar-funktion-int|kr2dollar modul.]]2-10.[[c:s1-modular-beregning#ex-dollar-double|Dollar omregning, double version.]]2-11.[[c:s1-modular-beregning#ex-dollar-modul-double|kr2dollar, return type double, module.]]2-12.[[c:s1-modular-beregning#AEN746|Header fil for kr2dollar]]2-13.[[c:filter-programmer#simpelt-filter|Simpelt filter, input til output.]]2-14.[[c:filter-programmer#hex-filter|Filter, som skriver ascii ordinal value.]]2-15.[[c:filter-programmer#ex-char-count|Simpelt filter som character counter.]]2-16.[[c:filter-programmer#ex-msdos2iso8859-1-forstadium|Codepage 865 til iso8859-1, forstadium.]]2-17.[[c:filter-programmer#ex-msdos2iso8859-1-Terrasse2|Terrasse 2]]2-18.[[c:filter-programmer#ex-msdos2iso8859-1-Terrasse3|Terrasse 3]]2-19.[[c:filter-programmer#ex-mime2asc|mime afkodning, std.input]]2-20.[[c:filter-programmer#ex-mime2ascii|Mime afkodning, fil input]]2-21.[[c:filter-programmer#beregnings-filter|Filter som konverterer linjer med tal til summen af tallene.]]2-22.[[c:sect-parser-programmer#ex-sgmlpre|En tag - parser, forstadium]]2-23.[[c:sect-parser-programmer#ex-tag-balance1|Tjek om sgml-tags balancerer]]2-24.[[c:sect-parser-programmer#ex-tagbal-sammenligning|Udvidelse af parse-level1 med kendte tag-typer]]2-25.[[c:sect-parser-programmer#ex-word-and-digit-count|Ord - tælling]]2-26.[[c:outformat1#ex-tal-hex|Tallene fra 0 til 7 i hexadecimal notation.]]2-27.[[c:outformat1#ex-hello-wordcount|Simpel ordtælling]]3-1.[[c:c-objekt-orienteret-tankegang#ex-aggregate|En struct]]3-2.[[c:c-objekt-orienteret-tankegang#ex-definition|Definition af en tomat-variabel]]3-3.[[c:c-objekt-orienteret-tankegang#ex-typedef|Struct type ved hjælp af typedef]]3-4.[[c:c-objekt-orienteret-tankegang#ex-declaration-and-definition|Erklæring og definition]]3-5.[[c:c-objekt-orienteret-tankegang#ex-anderledes-tomat|Udvælgelse af oplysninger]]3-6.[[c:c-objekt-orienteret-tankegang#ex-kort-bunke|Kort-bunke]]3-7.[[c:c-objekt-orienteret-tankegang#ex-bunkestart|Start punkt for kortbunke]]3-8.[[c:sect-oo-metoder#ex-kompilering-med-C-og-CXX|Kompilering af samme program med C og C++ oversættere]]3-9.[[c:sect-oo-metoder#ex-tal-abstraktion|Talklasse - en abstraktion]]3-10.[[c:sect-abstract-datatypes#ex-fopen|FILE typen]]4-1.[[c:expression-parser#calculator|Calculator, recursive descent expression parsing]]4-2.[[c:sect-ucc#ex-gas-programmering|Assembler programmering]]4-3.[[c:sect-ucc#ex-oversat|Output fra GNU-C oversætter]]4-4.[[c:sect-ucc#ex-uC-oversaettelse|uC oversættelse]]4-5.[[c:sect-ucc#ex-parser-externe-obj|C oversætter, parsning på øverste niveau]]A-1.[[c:a-crash#hello-world|Hello world! programmet.]]A-2.[[c:a-crash#ex-hello-types|Hello, World! med type-specifikationer.]]A-3.[[c:a-crash#A-enum|Enumeration]]A-4.[[c:a-crash#A-union|Union]]A-5.[[c:a-crash#ex-operator-precedence|Operator Præcedens]]A-6.[[c:a-crash#ex-kryptering1|Simpel kryptering]]A-7.[[c:sect-c-fundamentet#ex-const-violation|Konstant streng]]A-8.[[c:sect-c-fundamentet#ex-scope-rules|Scope eller synlighed]]A-9.[[c:sect-c-fundamentet#ex-external-decl|Extern declaration]]A-10.[[c:sect-c-fundamentet#ex-local-control-var|En lokal kontrol variabel]]---- | | | [[c:c-forord|næste]] | | | | Forord |