System-Programmierung in UNIX Tei 1: Werkzuge

Das vorliegende Buch ist der erste von zwei Bänden, die zusammen eine Ausarbei­tung der Software Vorlesungen bilden, die ich jeweils im zweiten Studienjahr im Ne­benfach Informatik an der Universität Ulm anbiete. Die Vorlesungen führen in ma­schinennahe Programmierung ein. Dabei bedeutet maschinenna...

Full description

Bibliographic Details
Main Author: Schreiner, Axel-Tobias
Format: eBook
Language:German
Published: Wiesbaden Vieweg+Teubner Verlag 1984, 1984
Edition:1st ed. 1984
Series:XLeitfäden der angewandten Informatik
Subjects:
Online Access:
Collection: Springer Book Archives -2004 - Collection details see MPG.ReNa
LEADER 10127nmm a2200361 u 4500
001 EB000697882
003 EBX01000000000000000550964
005 00000000000000.0
007 cr|||||||||||||||||||||
008 140122 ||| ger
020 |a 9783663014164 
100 1 |a Schreiner, Axel-Tobias 
245 0 0 |a System-Programmierung in UNIX  |h Elektronische Ressource  |b Tei 1: Werkzuge  |c von Axel-Tobias Schreiner 
250 |a 1st ed. 1984 
260 |a Wiesbaden  |b Vieweg+Teubner Verlag  |c 1984, 1984 
300 |a 315 S.  |b online resource 
505 0 |a 4.12.3 Die ”for” Schleife -- 4.12.4 Ein Vektor als Parameter -- 4.12.5 Initialisierung von Variablen -- 4.12.6 Inkrement- und Dekrementoperatoren -- 4.13 Ausblick -- 5 Vektoren, Zeichenketten und Zeiger -- 5.1 Begriffe -- 5.2 Deklaratoren -- 5.3 Ein primitiver Textspeicher -- 5.4 Der Datentyp ”char” -- 5.5 Die Speicherklassen ”register” und ”auto” -- 5.6 7eicheneinaabe -- 5.7 Zeichen sind Integer-Werte -- 5.8 Das Resultat einer Zuweisung -- 5.9 Logische Verknüpfungen -- 5.10 Zeigerwerte und Zeichenketten -- 5.11 Einfache Zeigeroperationen -- 5.12 Zeichenfunktionen -- 5.13 Zeiger als Parameter -- 5.14 Arithmetik mit Zeigern -- 5.15 Operationen mit Zeichenketten -- 5.16 Parameter im Hauptprogramm -- 5.16.1 Das Kommando ”echo” -- 5.16.2 Die Verarbeitung von Optionen -- 5.16.3 Beliebig viele Optionen -- 5.16.4 Ein Makro mit Parameter -- 5.16.5 Optionen und Texte gemischt -- 5.17 Umwandlungen : Zeiger sind keine Integer -- 5.18 Mehrdimensionale Vektoren --  
505 0 |a 3.3 Funktionsweise eines Makroprozessors -- 3.4 Standards und Makrobüchereien -- 3.5 Ersatz von Befehlen -- 3.6 Schnittstellen -- 3.7 Makros als Variablen -- 3.8 Spracherweiterungen -- 3.9 Kontrollstrukturen -- 3.9.1 Definition -- 3.9.2 Anwendungsbeispiel -- 3.9.3 Implementierung -- 3.10 Ausblick -- 4 Die Programmiersprache C -- 4.1 Entwicklungsgeschichte -- 4.2 Das Prinzip der L-Werte -- 4.3 Ein erstes Beispiel -- 4.4 Übersetzuna und Ausführuna -- 4.5 Quellformat -- 4.6 Programmstruktur -- 4.6.1 Vereinbarungen -- 4.6.2 Funktinnen -- 4.6.3 Der gute Ton -- 4.7 Ein- und Ausgabe -- 4.7.1 Ausgabe — ”printf” -- 4.7.2 Eingabe ” ”scanf” -- 4.8 Parameterübergabe -- 4.9 Euklid’s Alaorithmus -- 4.9.1 Skalare ”int” Variablen -- 4.9.2 Steuerzeichen -- 4.9.3 Einfache Anweisungen -- 4.9.4 Einfache Kontrollstrukturen -- 4.10 Operatoren -- 4.11 Funktionen -- 4.12 Maximum einer Liste von Zahlen -- 4.12.1 Vektoren, konventionell betrachtet -- 4.12.2 Der C Preprozessor --  
505 0 |a A.7.1 Basiskomplement mit umgekehrtem Vorzeichen -- A.7.2 Dezimal codierte Darstellung -- Anhang B Details zum ”nad” Prozessor -- B.1 Übersicht -- B.2 Aufruf des ”nad” Systems -- B.3 Quellformat -- B.4 Assembler-Anweisungen -- B.5 Allgemein verfügbare Befehle -- B.6 0-Adreß-Maschine -- B.7 1-Adreß-Maschine -- B.8 2-Adreß-Maschine -- B.9 3-Adreß-Maschine -- B.10 Reaistermaschine -- B.11 Adressen -- B.12 Arithmetische Ausdrücke -- Anhang C Details zum ”tec” Prozessor -- C.1 Übersicht -- C.2 Sprachdefinitionen -- C.2.1 Allgemeine Regeln -- C.2.2 Regeln zur Traversierung -- C.2.3 Bäume -- C.3 Aufruf des ”tec” Systems -- C.4 Beispiele -- Anhang D Details zum ”m4” Prozessor -- D.1 Übersicht -- D.2 Strings, Makros und Argumente -- D.3 Makrodefinitionen -- D.4 Bedingungen -- D.5 Arithmetische Operationen -- D.6 String-Operationen -- D.7 Dateioperationen -- D.8 Zusammenfassung -- Anhang E C Sprachbeschreibung -- E.1 Quellformat --  
505 0 |a 6 Modulare Programmierung -- 6.1 Problemstellung -- 6.2 Das Hauptprogramm -- 6.3 Externe Vereinbarungen -- 6.4 Sortieralgorithmen -- 6.4.1 Der ”bubble sort” Algorithmus -- 6.4.2 Der ”quick sort” Algorithmus -- 6.5 EinDatenmodul für Zahlen -- 6.5.1 Eigene Datentypen — ”typedef” -- 6.5.2 Die Speicherklasse ”static” -- 6.5.3 Restliche Überlegungen -- 6.5.4 Gleitkommaoperationen -- 6.5.5 Bedingte Übersetzung -- 6.6 Ein Datenmodul für Worte -- 6.7 Dynamische Speicherverwaltung -- 6.8 Programmanagement -- 6.8.1 Quellen verwalten — ”make” -- 6.8.2 Der Büchereimanager ”ar” -- 6.8.3 ”make” für Fortgeschrittene -- 6.8.4 ”make” und Büchereien -- 7 Strukturen, Varianten und Bit-Felder -- 7.1 Begriff und Zweck -- 7.2 Sprachliche Konzepte -- 7.2.1 Strukturen -- 7.2.2 Operationen mit Strukturen -- 7.2.3 Bit-Felder -- 7.2.4 Varianten -- 7.3 Datenerfassung mit Masken -- 7.3.1 Terminal-Operationen — ”mask/crt.c” --  
505 0 |a 1 Rechnerarchitekturen -- 1.1 Architektur im Großen -- 1.2 Architektur im Kleinen -- 1.3 Typische Maschinen -- 1.3.1 0-Adreß-Maschine -- 1.3.2 1-Adreß-Maschine -- 1.3.3 2-Adreß-Maschine -- 1.3.4 Registermaschine -- 1.3.5 3-Adreß-Maschine -- 1.4 Adressierung -- 1.4.1 Direkte Adressen -- 1.4.2 Indirekte Adressen -- 1.4.3 Indexadressen -- 1.4.4 Relative Adressen -- 1.4.5 Stack-Adressen -- 1.5 Sprungbefehle -- 1.6 Werkzeuge zur Programmierung -- 2 Assembler-Programmierung -- 2.1 Aufgaben eines Assemblers -- 2.2 Euklid’s Algorithmus -- 2.3 Quellformat -- 2.4 Assembler-Anweisungen -- 2.5 Algebraische Formeln -- 2.6 Vektorrechnung -- 2.7 Kontrollstrukturen -- 2.7.1 Sprungbefehle und Condition Codes -- 2.7.2 Einfache Kontrollstrukturen -- 2.7.3 Kompliziertere Bedingungen -- 2.8 Unterprogramme -- 2.9 Funktionsweise eines Assemblers -- 2.10 Ausblick -- 3 Programmierung mit Makros -- 3.1 Begriffe und Einsatzgebiete -- 3.2 Definition von Konstanten --  
505 0 |a 7.3.2 Problemstellung — ”mask/mask.h” -- 7.3.3 Initialisierung — ”mask/schirm.c” -- 7.3.4 Traversierung zur Ausgabe — ”mask/put.c” -- 7.3.5 Traversierung zur Eingabe — ”mask/get.c” -- 7.4 Verarbeitung von Formeln -- 7.4.1 Problemstellung -- 7.4.2 Definitionen — ”calc/calc.h” -- 7.4.3 Hauptprogramm — ”calc/calc.c” -- 7.4.4 Eingabe — ”calc/getsym.c” -- 7.4.5 Syntaxanalyse — ”calc/ausdruck.c” -- 7.4.6 Ausgabe — ”calc/infix.c” -- 7.4.7 Bewertung — ”calc/eval.c” -- 7.5 Ausblick -- Anhang A Computer-Arithmetik -- A.1 Übersicht -- A.2 Natürliche Zahlen -- A.2.1 Addition -- A.2.2 Basisumwandlungen -- A.3 Zahlen mit Vorzeichen -- A.4 Komplementdarstellungen -- A.5 Basis-1-Komplement -- A.5.1 Umwandlunaen und Umkehr des Vorzeichens -- A.5.2 Addition -- A.6 Basiskomplement -- A.6.1 Addition -- A.6.2 Umkehr des Vorzeichens und Umwandlungen -- A.6.3 Beispiele -- A.7 Andere Darstellungen --  
505 0 |a E.1.1 Zeilen, Worte und Kommentare -- E.1.2 Reservierte Worte -- E.1.3 Namen -- E.2 Preprozessor -- E.2.1 Textersatz -- E.2.2 Einfügen von Dateien -- E.2.3 Bedingte Ubersetzung -- E.2.4 Zeilennumerierung -- E.3 Skalare Datentypen und Konstanten -- E.3.1 Ganzzahlige Werte — ”int”, ”short” und ”Iong” -- E.3.2 Werte ohne Vorzeichen — ”unsianed” -- E.3.3 Zeichen — ”char” -- E.3.4 Gleitkommawerte — ”float” und ”double” -- E.3.5 Aufzählungen — ”enum” -- E.3.6 Prozeduren — ”void” -- E.3.7 Zeiger -- E.4 Umwandlungen -- E.4.1 Integer-Werte -- E.4.2 Werte ohne Vorzeichen -- E.4.3 Gleitkommawerte -- E.4.4 Zeiger -- E.4.5 Parameterübergabe -- E.5 Datenstrukturen -- E.5.1 Vektoren -- E.5.2 Zeichenketten und Konstanten -- E.5.3 Strukturen — ”struct” -- E.5.4 Bit-Felder -- E.5.5 Varianten — ”union” -- E.6 Ausdrücke -- E.6.1 Objekt und L-Wert -- E.6.2 Operanden -- E.6.3 Unitäre Operatoren -- E.6.4 Binäre Operatoren -- E.6.5 Auswahl --  
505 0 |a E.6.6 Zuweisungen -- E.6.7 Liste -- E.6.8 Konstante Ausdrücke -- E.7 Anweisungen -- E.7.1 Einfache Anweisungen -- E.7.2 Selektionen -- E.7.3 Schleifen -- E.8 Vereinbarungen -- E.8.1 Deklaration und Definition -- E.8.2 Speicherklassen und Lebensdauer -- E.8.3 Daten -- E.8.4 Typen -- E.8.5 Funktionen -- E.8.6 Geltungsbereich -- E.8.7 Deklaratoren -- E.8.8 Typangaben -- E.8.9 Initialisierung -- E.9 Implementierungsunterschiede -- E.9.1 Skalare Datentypen -- E.9.2 Externe Namen -- E.9.3 Reihenfolge von Definitionen -- E.9.4 Reihenfolge von Bewertungen -- E.9.5 Portabilität -- E.10 Syntax in Kürze -- E.11 Querverweise -- Bemerkungen zur Literatur -- 1. Assembler-Programmierung -- 2. Makroprozessoren -- 3. C Lehrbücher -- 4. C Sprachbeschreibungen -- 5. UNIX -- Quellen 
653 |a Engineering 
653 |a Technology and Engineering 
041 0 7 |a ger  |2 ISO 639-2 
989 |b SBA  |a Springer Book Archives -2004 
490 0 |a XLeitfäden der angewandten Informatik 
028 5 0 |a 10.1007/978-3-663-01416-4 
856 4 0 |u https://doi.org/10.1007/978-3-663-01416-4?nosfx=y  |x Verlag  |3 Volltext 
082 0 |a 620 
520 |a Das vorliegende Buch ist der erste von zwei Bänden, die zusammen eine Ausarbei­tung der Software Vorlesungen bilden, die ich jeweils im zweiten Studienjahr im Ne­benfach Informatik an der Universität Ulm anbiete. Die Vorlesungen führen in ma­schinennahe Programmierung ein. Dabei bedeutet maschinennahe Programmie­rung eigentlich nur zum Teil die Beherrschung aller Bestandteile einer spezifischen Maschine. Viel wichtiger erscheint mir, daß darüber hinaus auch das Betriebssy­stem, in unserem Fall also UNIX,l als Teil der gegebenen Maschine betrachtet wer­den muß. Ich spreche deshalb lieber von systemnaher Programmierung. Im ersten Band werden die Werkzeuge vorgestellt, mit denen man typischerweise systemnahe Programmierung betreibt. Im zweiten Band wird dann mit diesen Werk­zeugen der Umgang mit einem Betriebssystem erprobt. Beide Bände zusammen il­lustrieren den Unterbau, auf dem die sogenannte problemorientierte Programmie­rung erfolgt. Dem angehenden Software-Ingenieur soll in diesen Vorlesungen auch ein Gefühl für die Machbarkeit und Effizienz seiner problemorientierten Programme vermittelt werden. Der Leser sollte eine höhere Programmiersprache, zum Beispiel Pascal, einfache Datenstrukturen und problemorientierte Programmierung bereits einigermaßen be­herrschen. Die Programmbeispiele beziehen sich ohne ausführliche Erklärungen auf Algorithmen, die üblicherweise in einer Vorlesung über problemorientierte Program­mierung und Datenstrukturen besprochen werden