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

Ä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"—  Präsentation transkript:

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

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

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

4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ4 Einzelzeichenausgabe mit putchar() Einzelzeichen schreiben mit putchar() –int putchar(int); –#include 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

5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ5 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 –dann liegt im Eingabepuffer … –… und muss überlesen werden: c = getchar(); // Zeichen lesen getchar();// CR überlesen

6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ6 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

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

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

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

10 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ10 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

11 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ11 Eingabe mit scanf() 2 scanf() ist anders als printf() printf() gibt Werte aus –Konstante Werte wie –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)

12 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ12 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);

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

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 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

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 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);

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

17 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ17 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);

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 - DVZ18

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 - DVZ19


Herunterladen ppt "Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester 2014"

Ähnliche Präsentationen


Google-Anzeigen