Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de.

Ähnliche Präsentationen


Präsentation zum Thema: "Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de."—  Präsentation transkript:

1 Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ

2 Benutzerinteraktion Oft: Programme interagieren mit Benutzer  Ein- und Ausgaben Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

3 Einzelzeicheneingabe mit getchar()
Einzelzeichen lesen mit getchar() int getchar(void); #include <stdio.h> ist erforderlich Was macht getchar() Warten auf Tastendruck Benutzer tippt ein Zeichen Ausgabe des Zeichen auf Konsole (Echo) Benutzer tippt <CR> Liefert int, nicht char als Wert Grund: EOF (End of File) mit -1 definiert Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

4 Einzelzeichenausgabe mit putchar()
Einzelzeichen schreiben mit putchar() int putchar(int); #include <stdio.h> ist erforderlich putchar() erwartet int, nicht char als auszugebendes Zeichen Ausgabe des Zeichens an aktueller Stelle auf Konsole / Bildschirm / stdout Liefert geschriebenes Zeichen  OK EOF bei Fehler Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

5 Einzelzeichenein- und -ausgabe
Beispiel int c; while((c = getchar()) ! EOF) putchar(c); Problem: Pufferung der Eingabe getchar()liefert Zeichen nicht sofort sondern erst nach Eingabe von <CR> dann liegt <CR> im Eingabepuffer … … und muss überlesen werden: c = getchar(); // Zeichen lesen getchar(); // CR überlesen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

6 Ausgabe mit printf() 1 Wdh: Formatierte Ausgabe mit printf()
Aufruf: printf(fmt, arg1, arg2, ...) printf()hat variable Anzahl Parameter printf()konvertiert und gibt die Parameter unter Kontrolle des Formatstring fmt aus Der Formatstring fmt ist eine Zeichenkette Parameter argN können auch fehlen Die Parameter argN müssen den Typ haben, wie er im Formatstring fmt angegeben ist printf()liefert Anzahl ausgegebener Zeichen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

7 Ausgabe mit printf() 2 Wichtige Umwandlungszeichen für printf
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

8 Ausgabe mit printf() 3 Format erzwingt Anzahl +Typ der Parameter
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

9 Ausgabe mit printf() 4 Umwandlungsbezeichner: bis zu 6 Teile Flags
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

10 Eingabe mit scanf() 1 scanf()ist Gegenstück zu printf()
Aufruf: scanf(fmt, arg1, arg2, ...) scanf()hat variable Anzahl Parameter Aus der scanf()-Eingabe werden den als Parameter angegebenen Variablen neue Werte wie im Formatstring fmt festgelegt zugewiesen scanf()liefert als Ergebnis Anzahl erfolgreich zugewiesener Werte Negativer Fehlercode Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

11 Eingabe mit scanf() 2 scanf()ist anders als printf()
printf()gibt Werte aus Konstante Werte wie 3.141 Werte von Variablen wie x scanf()weist Variablen neuen Wert zu die Variable x liegt an einer Stelle im Speicher das ist die Adresse der Variablen x An dieser Stelle / Adresse ist der Wert von x entsprechend dem Typ von x in Länge und Form abgelegt (= gespeichert) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

12 Eingabe mit scanf() 3 scanf()soll den eingelesenen neuen Wert für eine Variable an deren Adresse im Speicher ablegen Der unäre Adress-Operator & liefert die Speicheradresse von Variablen im Speicher Bsp: int i; long l; printf(Variable i an Adresse %p\n, &i); printf(Variable l an Adresse %p\n, &l); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

13 Eingabe mit scanf() 4 Wichtige Umwandlungszeichen für scanf()
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

14 Eingabe mit scanf() 5 Modifizierer für scanf()-Format
ganz analog zu printf() zwischen Prozentzeichen und Typzeichen h für short l (oder L) für long Asterisk * verhindert die Zuweisung an einen Parameter Zahl zur Bestimmung der Feldbreite Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

15 Eingabe mit scanf() 6 Beispiel für Benutzung von scanf() int tag, monat, jahr; printf(Datum eingeben: ); scanf(%d %d %d, &tag, &monat, &jahr); weiteres Beispiel int tag, monat, jahr; printf(Datum tt/mm/jjjj eingeben: ); scanf(%d/%d/%d, &tag, &monat, &jahr); und noch ein Beispiel int tag, monat, jahr; printf(Datum eingeben: ); scanf(%d%*c%d%*c%d, &tag, &monat, &jahr); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

16 Eingabe mit scanf() 7 scanf.c – Beispieleingaben mit scanf
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

17 Eingabe mit scanf() 8 Gültige Eingabezeichen bei scanf() int key, result; printf(Programm beenden? (J/N) ); result = scanf(%[JNjn], &key); // result = 1 bei JNjn, sonst 0 weiteres Beispiel int key, result; printf(Programm beenden? (Y/N) ); result = scanf(%1[^Yy], &key); // result = 0 bei Yy, sonst 1 Bereichsliste von gültigen Eingaben result = scanf(%[A-Z], &key); Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

18 Eingabe mit scanf() 9 Zusammenfassung scanf()
Formatstring kann white spaces (Leerzeichen, Tabulator usw.) enthalten, werden ignoriert Umwandlungsangaben fast wie bei printf() Gewöhnliche Zeichen als Begrenzer zwischen den Werten, die den einzelnen Parametern zugewiesen werden Diese Zeichen müssen eingegeben werden, bevor ein Wert für den nächsten Parameter eingelesen werden kann scanf() ohne Adressoperator  FEHLER Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

19 Wichtig bei Benutzerinteraktion
Letztes Zeichen einer abgeschlossenen Ausgabe: Newline \n Keine zeilenweise Durchmischung von Ausgaben Konvention unterstützt Wiederverwendung von Quelltext Erst printf(), dann scanf() Aussagekräftige Eingabeanforderung Problem: nach getchar() bleibt ein Zeichen im Eingabepuffer Mit weiteren getchar() „weglesen“ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ


Herunterladen ppt "Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de."

Ähnliche Präsentationen


Google-Anzeigen