ich war hier: Baumelement2895 » ProzProg4EingabeAusgabe

Version [22629]

Dies ist eine alte Version von ProzProg4EingabeAusgabe erstellt von RonnyGertler am 2013-03-27 20:31:38.

 

 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Prozedurale Programmierung - Kapitel 4 - Eingabe und Ausgabe


Inhalte von Dr. E. Nadobnyh

Grundbegriffe


1. Eine Ausgabe ist die Datenlieferung vom Prozessor bzw. vom Programm zu Peripherie (Bildschirm, Datei).

2. Eine Eingabe ist die Datenlieferung von Peripherie (Tastatur, Datei) zum Prozessor.

3. I/O steht für "Input/Output", E/A -für "Eingabe/ Ausgabe".

4. Bildschirm und Tastatur werden auch als Konsole bezeichnet.

5. Die E/A–Operationen über Konsole werden als interaktive und die E/A–Operationen mit Dateien als nicht-interaktive bezeichnet.


Bibliothekfunktionen für E/A


Für die Eingabe und Ausgabe stehen in C und C++ keine Operatoren zur Verfügung. Die entsprechende Funktionen werden in Standardbibliotheken definiert.

Zwei Standardbibliotheken sind verbreitet:

1) stdio-Bibliothek für C enthält rund 40 Funktionen, darunter printf und scanf als zentrale Funktionen .
2) iostream-Bibliothek für C++ enthält eine ganze Klassenhierarchie und auch Objekte cout und cin.


Überblick


In C++ stehen die C-Funktionen auch zur Verfügung.

C++ hat ihr eigenes Eingabe-Ausgabe-Konzept. Es ist typsicher und ist leicht erweiterbar, z.B. für benutzerdefinierten Datentypen. Standardbibliotheken werden durch die Include-Dateien <stdio.h> und <iostream> eingebunden.

Hier sind einige Beispiele ohne formale Beschreibung:

Bibliothek
Aufgabe
sdtio iostream
Bildschirmausgabe printf cout<<
Tastatureingabe scanf cin>>
Dateizugriff fprintf und fscanf fstream



4.1. Bildschirmausgabe


printf


Die formatgesteuerte Ausgabe erfolgt in der stdio-Bibliothek mit der Funktion printf (print formatted). Diese Funktion übersetzt interne Werte in Textzeilen.

Syntax (nicht vollständig): printf (fz , a1, ... ,aN );

1) Argumente a1 bis aN sind Variablen oder andere Daten, die ausgegeben werden müssen.

2) Eine Format-Zeichenkette fz steuert die Formatierung aller Argumente. Sie enthält zwei Arten von Zeichenfolgen:
  1. gewönliche Zeichen, die in die Ausgabe kopiert werden;
  1. Formatelemente, die mit dem Zeichen % beginnen und eigentliche Formatierung für die Argumente steuern.

3) Jeder Formatelement bestimmt das Format für ein entsprechendes Argument. Die Format-Zeichenkette bestimmt, wieviele weitere Argumente folgen.


Format-Zeichenkette


Bei der Ausgabe wird jedes Formatelement durch den Wert des nächsten Argumentes ersetzt.

 (image: http://ife.erdaxo.de/uploads/ProzProg4EingabeAusgabe/pp18.gif)

Erklärung:

Format-Zeichenkette: “2 * %d ergibt %d “
Formatelement: %d
Argumente: a, b
Steuerung: zwei %d steuern a und b
Ausgabe: 2 * 5 ergibt 10



printf-Formatelement


Ein Formatelement (Umwandlungsspezifikation) besteht aus 6 Teilen. Linker und rechter Teil sind obligatorisch.

% - min .max L UZ


% Anfang des Formatelementes
- Minus steuert linksbündige Ausgabe
min Mindestlänge des Ausgabebereichs
.max 1)Anzahl Stellen rechts vom Punkt für Gleitpunkttypen
2)Maximale Länge der auszugebenden Zeichenkette
L L - Argument ist long double, l - Argument ist long
UZ Umwandlungszeichen, z.B.:
d – Darstellung von Ganzzahlen,
f – Darstellung von Gleitpunktzahlen.


Beispiel:
float a=3.141592; printf(„pi= %7.3f“, a); //pi= 3.142


printf-Umwandlungszeichen


Das Umwandlungszeichen gibt die Interpretation des auszugebenden Wertes.

UZ Ausgabe als:
c Einzelzeichen
d, i Ganzzahl (dezimal)
u Ganzzahl (dezimal, nur positiv)
o Ganzzahl (oktal, nur positiv)
x, X Ganzzahl (hexadezimal, nur positiv)
e, E Gleitpunktzahl in Exponentendarstellung
f Gleitpunktzahl in Dezimalbruchdarstellung
g, G kürzeste Darstellung von e oder f
s Zeichenkette (C-String)
p Pointer (Adresse )


⇒ Demos 1, 2, 3.


4.2. Tastatureingabe


scanf

Die formatgesteuerte Eingabe erfolgt in der stdio-Bibliothek mit der Funktion scanf (scan formatted). Diese Funktion übersetzt Eingabefelder in interne Werte. Sie macht praktisch die gleiche Umwandlungen wie printf in der umgekehrten Richtung.

Syntax (nicht vollständig): scanf (fz , a1, ... , aN );

1) Argumente a1 bis aN sind Zeiger auf Variablen oder Adressen. Sie geben an, wo die dazugehörigen umgewandelten Daten gespeichert werden sollen. Die Variablen müssen über den Adress- Operator (&) angesprochen werden.

2) Eine Format-Zeichenkette fz legt die Anzahl der Eingaben und Interpretation (Typ, Format) der einzelnen Eingabefelder fest. Sie kann enthalten:
  1. Blanks, Tabs und Newlines (werden ignoriert),
  1. Formatelemente (Umwandlungsspezifikationen).


scanf- Ausführung


1) Die Eingabe wird erst an das Programm gesendet, nachdem die Returntaste betätigt wurde.

2) scanf hört auf, wenn die Format-Zeichenkette abgearbeitet wurde, oder wenn ein Eingabefeld nicht zur Umwandlungsangabe passt.

3) Der nächste scanf-Aufruf beginnt seine Suche nach dem zuletzt umgewandelten Zeichen.

4) Eingabefelder werden durch Zwischenraumzeichen getrennt: Leerzeichen, Tabulatorzeichen, Seitenvorschub, Newline ua. Daraus folgt, daß scanf über Zeilengrenzen hinweg liest,

5) Ein Eingabefeld wird bis zu:
a) dem nächsten Zwischenraumzeichen oder
b) einer angegebenen Feldbreite gelesen.


scanf-Formatelement


Ein Formatelement (Umwandlungsspezifikation) besteht aus 5 Teilen. Linker und rechter Teil sind obligatorisch.

% * max L UZ


% Anfang des Formatelementes
* Eingabefeld wird übergangen
max Maximale Länge des Eingabefeldes
L L - Argument ist long double, l - Argument ist long oder double ua.
UZ Umwandlungszeichen: c, u, d, i, o, x, e, f, g, s


Das Umwandlungszeichen gibt die Interpretation des Eingabefeldes. Achtung: scanf unterscheidet zwischen f für float und lf für double.

Beispiel:
int i1; scanf("%d", &i1); //Eingabe: 1234


fflush


Ein- und Ausgabeoperationen sind gepuffert Bei Dialoganwendungen, z.B. über Konsole, wird ein gemeinsamer Puffer verwendet.

In manchen Fällen bei abwechselnder Eingabe und Ausgabe ist es erforderlich, den Puffer zu leeren. Für solche Fälle ist die Funktion fflush vorgesehen.

Beispiel: fflush(stdin);

⇒ Demo 4.


4.3. Dateizugriff























CategoryProzProg
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki