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