Grundlagen der Informatik

Werbung
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 <stdio.h> 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
<stdio.h> 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 <stdio.h>
• 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
Herunterladen