Rekapitulation: Hardware, was ist ein Computer? Braucht man Transistoren? (Andere Halbleiter, mechanische Computer) kurs-a01, kurs-a02, ..., kurs-a30 Einheitliches Passwort: prAk!4U Unix-Kommandozeilenumgebung: Was ist eine Kommandozeile? GUI als Wrapper um Kommandozeile. Betriebssystem: Sammlung von Programmen Was ist Programmierung? Wann sind Daten Programme? (logische Steuerung, Algorithmen) vgl. Perl, vgl. Shell-Skript (Python?) für Beispiele 1.) Kürzestes C-Programm (Subroutinen) main() { } 2.) Bildschirmausgabe (Bibliotheken einbinden) #include main() { printf ("tumba ba-umpf.\n"); } 3.) Wiederholungsschleife (Variablendefinition) #include main() { int x; for (x=0; x<10; x++) { printf ("tumba ba-umpf\n"); } } 4.) Wiederholungsschleife (Ausgabe der Variablenwerte) #include main() { int x; for (x=1; x<=10; x++) { printf ("%d tumba ba-umpf\n", x); } } 5.) Wiederholungsschleife (if-/then-Bedingung) main() { int x; for (x=1; x<=10; x++) { printf ("%d tumba ba-umpf\n", x); if (x>5) { printf ("kusagauma"); } } 6.) String-Variablen #include main() { int x; char line[] = "tumba ba-umpf"; for (x=1; x<=10; x++) { printf ("%d %s\n", x, line); } } 7.) Aufteilung der String-Variablen #include main() { int x; char word1[] = "tumba"; char word2[] = "ba-umpf"; for (x=1; x<=10; x++) { printf ("%d %s %s", x, word1, word2); } printf ("\n"); } 8.) Zufallsfunktion (Bibliotheken, If-then-Bedingung) #include #include #include main() { int x, zufall; char word1[] = "tumba"; char word2[] = "ba-umpf"; srand(time(0)); for (x=1; x<=10; x++) { zufall = rand()%2; if (zufall == 0) { printf ("%s ", word1); } else { printf ("%s ", word2); } } printf ("\n"); } 9.) String-Array (Definition und Auslesen) #include #include #include main() { int x, zufall; char *word[] = {"tumba","ba-umpf"}; srand(time(0)); for (x=1; x<=10; x++) { zufall = rand()%2; if (zufall == 0) { printf ("%s\n", word[0]); } else { printf ("%s\n", word[1]); } } } 10.) Beispiel für Absturzcode #include #include #include /* Absichtlich falsch * kreiert Absturz durch falsche * Nullpointer */ main() { int x, zufall; char *word[] = {"tumba","ba-umpf"}; srand(time(0)); for (x=1; x<=10; x++) { zufall = rand()%2; if (zufall == 0) { printf ("%s\n", word[1]); } else { printf ("%s\n", word[2]); } } printf ("\n"); } 11.) Eliminierung der if/then-Bedingung durch direktes Auslesen des String-Arrays #include #include #include main() { int x, zufall; char *word[] = {"tumba","ba-umpf"}; srand(time(0)); for (x=1; x<=10; x++) { zufall = rand()%2; printf ("%s\n",word[zufall]); } } 12.) Umprogrammierung für 2 Wörter pro Zeile, mit Fehler #include #include #include /* Umprogrammierung fuer zwei Woerter pro Zeile */ /* Dieses Beispiel enthaelt einen Fehler */ main() { int x, zufall; char *word[] = {"tumba","ba-umpf"}; srand(time(0)); for (x=1; x<=10; x++) { zufall = rand()%2; printf ("%s %s\n",word[zufall],word[zufall]); } } 13.) Umprogrammierung für 2 Wörter pro Zeile, ohne Fehler #include #include #include /* Umprogrammierung fuer zwei Woerter pro Zeile */ /* Fehler behoben */ main() { int x; char *word[] = {"tumba","ba-umpf"}; srand(time(0)); for (x=1; x<=10; x++) { printf ("%s %s\n",word[rand()%2],word[rand()%2]); } } Nächste Woche: Subroutinen, Eingaben