Adresse: 217.197.81.51 Aufschalten: ssh ckurs@217.197.81.51 Passwort: kernighan&ritchie Thema: Kontrollstrukturen und Funktionen * In C wird eine Anweisung nach der anderen ausgeführt * Funktion: getchar() ließt ein Zeichen aus der Eingabe - wenn das Ende der Eingabe erreicht ist, wird EOF (end of file) zurückgegeben. EOF hat den Wert -1. - Das Ergebnis von getchar() muss in einem int gespeichert werden, weil man sonst EOF nicht von dem Zeichen 255 unterscheiden kann. * putchar() gibt ein Zeichen aus. * while-Schleife: while (bedingung) anweisung; oder while (bedingung) { anweisung1; anweisung2; ... } - macht folgendes: Solange die Bedingung gilt, führe die Anweisungen aus. teste Bedingung -> wahr; Anweisung; teste Bedingung -> wahr; Anweisung; teste Bedingung -> falsch; fertig. * ähnlich: do-while-Schleife: do anweisung; while (bedingung); do { anweisung; ... } while (bedingung); Anweisung; Bedingung -> wahr Anweisung; Bedingung -> wahr Anweisung; Bedingung -> falsch fertig. - Unterschied: Bedingung wird am Anfang nicht getestet * for-Schleife: for (anfang; bedingung; inkrement) { ... } for (anfang; bedingung; inkrement) koerper; * Beispiel: for (i = 0; i < 10; i++) koerper; macht folgendes: koerper mit i = 0; koerper mit i = 1; koerper mit i = 2; koerper mit i = 3; koerper mit i = 4; koerper mit i = 5; koerper mit i = 6; koerper mit i = 7; koerper mit i = 8; koerper mit i = 9; * Was passiert: anfang; bedingung?; koerper; inkrement; bedingung?; koerper; inkrement; bedingung?; ... bis die Bedingung mal falsch ist. * if Statement if (bedingung) anweisung; - führe Anweisung aus, wenn die Bedingung wahr ist. Ansonsten überspringe die Anweisung. if (bedingung) anweisung1; else anweisung2; - wenn Bedingung wahr ist, führe Anweisung1 aus, sonst führe Anweisung2 aus. * break: bricht aus Schleifen aus; break; - Die innerste Schleife wird sofort beendet - funktioniert nicht über Funktionsgrenzen * Standardfunktionen aus (character type) - klassifiziert Schriftzeichen - z vom Typ char (typischerweise ASCII) - isalnum(z) Ist z Buchstabe oder Zah - isalpha(z) Ist z Buchstabe - iscntrl(z) Ist z Steuerzeichen - isdigit(z) Ist z Ziffer - isgraph(z) Ist z druckbar (kein Leerzeichen, kein Steuerzeichen) - islower(z) Ist z Kleinbuchstabe - isupper(z) Ist z Großbuchstabe - isprint(z) Ist z druckbar oder das Leerzeichen - isspace(z) Ist z Weißraum (Leerzeichen, Tabulator, Zeilenumbruch, etc.) - isxdigit(z) Ist z Hexadezimalziffer - toupper(z) Mache aus z einen Großbuchstaben - tolower(z) Mache aus z einen Kleinbuchstaben Hausaufgabe: - Unser wc.c hat einen Bug: Wenn die Eingabe nicht in einem Zeilenumbruch endet, dann sind die Ergebnisse falsch. Beheben Sie den Bug!