Kurs ist freiwillig und gibt auch keine LP / ECTS
Vorlesungen bauen aufeinander auf
Kontinuierliche Anwesenheit sinnvoll
Programmiert wird auf 64bit-Linux-Rechnern (z.B. Poolrechner)
Unterstützung von Mentoring-Programm des Fachbereichs1
Folien werden veröffentlicht auf: https://page.mi.fu-berlin.de/jonascleve/ss16-c-kurs/
Nach der Veranstaltung im KVV
Tutorien: Ihr arbeitet an Aufgaben, wir helfen euch
Wem sind folgende Konzepte (noch) unklar:
if
)?while
, for
, …)?Einführung in die Programmiersprache C
Vermittlung der wichtigsten Grundkenntnisse für das Programmieren in C
Weniger Angst vor C
Nach dem Kurs sollt ihr in der Lage sein:
Die Betriebs- und Kommunikationssysteme-Übungen selbstständig zu lösen
Euch eventuell fehlende Kenntnisse selbstständig anzueignen
Vorlesung
Grundstruktur eines C-Programms
Programme kompilieren
Text ausgeben
Tutorium
Linux kennenlernen
Konsole benutzen
Benutzbare Arbeitsumgebung schaffen
Aufgabe: Ein Programm schreiben, welches “Hallo Welt!” ausgibt und sich beendet.
Diese Spezifikation soll eingehalten werden.
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Quellcode kann so nicht ausgeführt werden
Kompilieren (Übersetzen in Maschinenbefehle) nötig
Wir verwenden dafür den GCC
gcc hello-world.c -o hello-world
# ^ C-Datei ^ ausführbare Datei
Programm testen:
$ ./hello-world
Hallo Welt!
$
Dem Compiler können zusätzliche Optionen übergeben werden
Im Kurs kompilieren wir immer mit folgenden Optionen:
gcc -std=c11 -Wall -Wextra -pedantic -o A A.c
-std=c11
: Wir verwenden den C-Standard von 2011
-Wall
: Schalte viele nützliche Warnungen an
-Wextra
: Schalte weitere nützliche Warnungen an
-pedantic
: Erzwinge Befolgung des ISO-C-Standards
-o A
: Die Eingabe A.c
wird in ausführbare Datei A
umgewandelt
Wir wollen keine Warnung ignorieren → guter Programmierstil
Man kann bei C viel “Unsinn” machen, ohne das zu merken
Jetzt: wollen Text bunt färben
Gewünschte Ausgabe: Hallo !
"\033[31m"
für roten Text"\033[39m"
für “normalen” Text #include <stdio.h>
#include <stdlib.h>
int main() {
printf("Hallo ");
printf("\033[31m"); // ab hier alles ROT
printf("Welt");
printf("\033[39m!\n"); // vor "!" wieder normal
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
int main() {
printf("\033[31mH\033[39ma\033[31ml\033[39ml");
printf("\033[31mo \033[39mW\033[31me\033[39ml");
printf("\033[31mt\033[39m!\n");
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define RED "\033[31m"
#define NORMAL "\033[39m"
int main() {
printf(RED "H" NORMAL "a" RED "l" NORMAL "l");
printf(RED "o " NORMAL "W" RED "e" NORMAL "l");
printf(RED "t" NORMAL "!\n");
return EXIT_SUCCESS;
}
#define
kann Text ersetzt werden, bevor das Programm wirklich kompiliert wird#define RED "\033[31m"
#define NORMAL "\033[39m"
printf(RED "H" NORMAL "a" RED "l");
wird zu
printf("\033[31m" "H" "\033[39m" "a" "\033[31m" "l");
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Hallo \"");
printf(argv[1]);
printf("\"\n");
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Hallo \"");
printf("%s", argv[1]);
printf("\"\n");
return EXIT_SUCCESS;
}
printf
Ist eine Funktion mit variabler Parameteranzahl
int printf(const char *format, ...)
mindestens ein Parameter
Platzhalter im ersten Parameter setzen nachfolgende Werte ein
Beispiele:
printf("A", "B") => "A"
printf("A%s", "B") => "AB"
printf("%sA", "B") => "BA"
printf("1: %s, 2: %d, 3: %f", "Hi", 423, 354.2) => "1: Hi, 2: 423, 3: 354.200000"
Auswahl möglicher Platzhalter:
%s
– Text
%d
– Zahlen (auch negativ), %u
– Zahlen (nur positiv)
%f
– Kommazahlen
Allgemein
Grundstruktur eines C-Programms
Aufgabenstellungen sollten exakt bearbeitet werden
Quellcode sinnvoll formatieren
C-spezifisch
Programme kompilieren
Text ausgeben
Bunten Text ausgeben
Makros (#define
) für oft wiederholten / unübersichtlichen Code definieren
printf