Grundlagen der Informatik Einführung in die Programmiersprache C Teil 2 Ein- und Ausgabe in C-Programmen

Prof. Dr.-Ing. Thomas Wiedemann Fachgebiet Informatik / Mathematik

Überblick zur Vorlesung Ein- und Ausgabe in C-Programmen • Ausgabe von Daten auf dem Bildschirm • Eingabe von Daten von der Tastatur • Anwendungsbeispiele

Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 2

•1

Aus- und Eingabe von Daten Allgemeine Anforderungen • eine nur auf sich selbst bezogene Berechnung ist kaum sinnvoll Ausgaben sind notwendig zur • Darstellung von Ergebnissen • Information über den Verlauf von Berechnungen • teilweise auch zur Fehlersuche Eingaben dienen • zur Eingabe von variablen Berechnungsparametern • zur Steuerung der Berechnungsablaufes Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 3

Aus- und Eingabegeräte Analog zu Ihrer historischen Entwicklung existieren folgende Geräte, welche sich mit den angegebenen Abkürzung in C direkt ansprechen lassen : • Konsole (con), bestehend aus Tastatur und Bildschirm im reinen Textmodus – Tastatur enthält bei PC´s einen eigenen Mikroprozessor zur Verarbeitung der Eingaben und liefert teilweise relativ komplizierte Tastaturcodes – Bildschirm wird vom Prozessor angesteuert und zeigt entweder über einen Zeichengenerator (DOS) oder Grafikcontroller mit geladenen Schriftsätzen (Fonts) die Buchstaben als Pixel an

• Dateien („Dateiname“) im Lese- und Schreibmodus • Drucker (prn) als reine Ausgabegeräte mit dem Problem der Ansteuerung von Sonderzeichen und Grafik (früher reine Textausgabe) • Scanner und andere Bildverarbeitungsgeräte seit 1995 zusätzlich auch Einlesen und Ausgabe per Internet: • Internetserver („http://...“ , „ftp://...“ ) Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 4

•2

Arten der Aus- und Eingabe in C Je nach Anforderung können verschiedene Arten der Ein- und Ausgabe verwendet werden: • Zeichenweise Ein- und Ausgabe – sinnvoll nur für die Eingabe einzelner Zeichen – z.B. zur Steuerung des Programmablaufs oder Befehlsauswahl

• Ein- und Ausgabe von Texten – für die reine Textverarbeitung – - z.B. für Eingabe von Adreßdaten, Textverarbeitung

• Formatierte Ein- und Ausgabe – Eingabe von Text und Umwandlung des Textes in andere Datenformate – für alle Zahleneingaben Anwendungshinweis: Da mit der formatierten Ein- und Ausgabe können prinzipiell auch Texte oder Einzelzeichen ausgegeben werden, wird diese sehr oft verwendet. Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 5

Zeichenweise Ausgabe • C stellt spezielle Funktionen für die Ein- und Ausgabe zur Verfügung • diese gehören jedoch nicht zum Standardbefehlssatz von C • deshalb muß die Bibliothek

#include eingebunden werden !

Zeichenweise Ausgabe in C – mit der Funktion putchar(char c) wird genau ein Zeichen ausgegeben char c;

// definiert eine Variable vom Typ Zeichen

c= 'h' ;

// weist Buchstaben zu

putchar ( c ) ;

// gibt den Wert von c – hier 'h' auf dem Bildschirm aus

- es ist auch ein Aufruf mit direkter Angabe des auszugebenden Zeichens möglich

putchar ( 'H' ) ; putchar ( 'a' ) ; putchar ( 'l' ) ; putchar ( 'l' ) ; putchar ( 'o' ) ; // gibt den Text Hallo auf dem Bildschirm aus // sollte aber NICHT SO VERWENDET werden – es gibt effizientere Optionen Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 6

•3

Zeichenweise Eingabe • analog zur zeichenweisen Ausgabe werden in der gleichen Bibliothek auch mehrere Funktionen zur Eingabe bereitgestellt Zeichenweise Eingabe in C • mit der Funktion int getch() wird 1 Zeichen von der der Tastatur abgefragt : – falls kein Zeichen gedrückt vorhanden ist, WARTET die Funktion auf die nächste Eingabe und kommt erst dann zurück – sinnvoll zum Anhalten des Programm (schlecht für laufende Abfragen..) – Bsp.:

char c;

// definiert eine Variable vom Typ Zeichen

c = getch();

// holt Wert von der Tastatur oder wartet auf Eingabe

• Die Funktion int getche() arbeitet genauso wie getch(), gibt jedoch noch das eingegebene Zeichen selbst auf dem Bildschirm aus (das e steht für Echo) • ACHTUNG: Einige Spezialtasten, wie die Taste Einfügen oder Funktionstasten geben für einen Tastendruck mehrere Werte zurück. Diese sind ggf. kombiniert auszuwerten. (siehe Übung Strings im nächsten Semester) • Mit int kbhit( void ) kann auf Vorliegen von Tastendrücken getestet werden ! Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 7

Zeilenweise Ein- und Ausgabe von Texten • analog zur zeichenweisen Ein- und Ausgabe werden Funktionen zur zeilenweise Ein- und Ausgabe bereitgestellt • Zeilenweise Ausgabe von Texten puts(char *text) ; Bsp.: puts( "Hallo Welt " );

puts( Vorname ); puts( Nachname );

• Zeilenweise Eingabe von Texten gets( char *text ); Bsp.:

char textpuffer[80]; gets( textpuffer); // liest Zeichen bis Entertaste auf Textpuffer ein puts( textpuffer); // ... und gibt die Zeichen wieder aus

Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 8

•4

Formatierte Ein- und Ausgabe • dient meist zum Ausgeben und Ausgeben von Zahlen in Kombination mit Texten

Formatierte Ausgabe • Basisbefehl

printf ( text , { Argumente } ) ; // { } optional

• wieder aus Bibliothek #include • kann prinzipiell alle Datentypen ausgeben ! • einfachste Form :

printf("Hallo Ihr"); // analog zu puts

• bei der Ausgabe von Zahlen kann in printf – die Position und die Zahlenformatierung sehr genau gesteuert werden

int x; float y; printf("x-Wert= %d y-Wert = %f ", x , y ); Formatierungstext

beliebig viele Variablen

– %-Zeichen im Text dienen als Platzhalter für die Zahlenwerte – Angaben nach dem %-Zeichen definieren die genaue Formatierung des Wertes – die Werte müssen GENAU in der Reihenfolge der %-Angaben in der Liste stehen !!! Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 9

Formatierte Eingabe • analog existiert eine Funktion zum formatierten Eingeben der Basisbefehl der Basisbefehl zum Einlesen von Daten von der Tastatur lautet

scanf("%f

", &y );

Formatierungstext

beliebig viele Variablen mit Angabe der Adresse (&) !

Wichtige Regeln: • da Daten zurückgegeben werden sollen, muß als Übergabeparameter eine ADRESSE angegeben werden – dies bewirkt der Operator & • eine direkte Angabe eines Wertes führt in der Regel zu Programmabstürzen • die Formatierungsangaben entsprechen fast immer denen von printf (siehe Folgefolie und zusätzliches Arbeitsblatt) • eine Nichtübereinstimmung von %_-Angabe und dem Datentyp führt meist zu falschen Eingabewerten (meist Null oder zufällige Zahlenwerte) Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 10

•5

Formatierungscodes für Aus- und Eingabebefehle in C • ACHTUNG: Der Typ der Variablen und der Formatierungscode MUSS GENAU ÜBEREINSTIMMEN !!!!!!! • Falls nicht, sind sehr schwer auffindbare Fehler möglich : – es kommt zu absolut falschen Ausgaben (Text wird als Zahl interpretiert) – sind Abstürze und völliges Versagen des Programmes möglich

Ganze Zahl: int x;

printf("%i",x);

scanf("%i", &x);

Gleitkomma: float y;

printf("%f",y);

scanf("%f", &y);

Gleitkomma: double y;

printf("%f",y);

scanf("%lf", &y);

Text:

printf("%s",s);

scanf("%s", &s);

char s[10];

Diese 3 Grundtypen sind auswendig zu lernen. Alle anderen 25 Codes (und teilweise noch mehr) sind den Dokumentationen der Compiler zu entnehmen ! Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 11

Spezialzeichen zur Steuerung der Ausgabe • Neben der reinen Textausgabe sind Steuerzeichen erforderlich. • Diese werden in C (und auch Java) als Kombination von \ und einem Buchstaben kodiert:

– \n

neue Zeile bei der Ausgabe

• Bsp.: printf("Werte \n x=%i \n y=%f", x, y); // erzeugt 3 Zeilen

– \t

springt zu Tabulatorposition (meist Vielfaches von 8)

• Bsp.: printf("Werte: \t x=%i \t y=%f", x, y); // alles auf einer Zeile mit Tabs

– \" erzeugt im Text ein " (sonst würde der Compiler ein Textende annehmen)

– \\ erzeugt im Text genau ein \ (sonst würde der Compiler ein \.. annehmen) – \% erzeugt Prozentzeichen Grundlagen der Informatik I - 1

-

T.Wiedemann-

Seite 12

•6