IT1 C Programming Lecture Notes PDF
Document Details
Uploaded by ProfoundDerivative7700
Hochschule Mannheim
M. Hauske
Tags
Summary
These lecture notes cover the fundamentals of C programming, including syntax, data types, variables, and functions. Examples and exercises are provided to strengthen understanding and practical application of C programming concepts.
Full Transcript
Fakultät für Elektrotechnik Einführung in die Programmierung mit IT-Anwendungen (IT1) Kapitel 2: C Grundlagen SoSe24 Prof. Dr. M. Hauske Hochschule Mannheim University of Applied Sciences Ein erstes C Programm: wortspiel.c #include int main(void) { printf("C oder nicht C: Das ist hier die...
Fakultät für Elektrotechnik Einführung in die Programmierung mit IT-Anwendungen (IT1) Kapitel 2: C Grundlagen SoSe24 Prof. Dr. M. Hauske Hochschule Mannheim University of Applied Sciences Ein erstes C Programm: wortspiel.c #include int main(void) { printf("C oder nicht C: Das ist hier die Frage.\n"); return 0; } IT1 Prof. Hauske Kapitel 2: C Grundlagen 2 Der Weg von C-Code zu einer ausführbaren Datei: Von wortspiel.c zu wortspiel.exe Preprocessing Direktiven (beginnen mit #) bearbeiten Code ergänzen Compiling Von Menschen lesbarer Code in Maschinenbefehle (object code) übersetzen Linking Ausgabe des Compilers mit zusätzlichem Code, der zur Ausführung benötigt wird (z.B. Bibliothek-Funktionen wie printf) ergänzen IT1 Prof. Hauske Kapitel 2: C Grundlagen 3 Integrated Development Environments ▪ Integrated Development Environment (IDE) − Editieren, Kompilieren, Linken, Ausführen, Debuggen − z.B. Microsoft Visual Studio IT1 Prof. Hauske Kapitel 2: C Grundlagen 4 Allgemeiner Programmaufbau Direktiven #include int main(void) { Anweisungen printf("C oder nicht C: Das ist hier die Frage.\n"); return 0; } IT1 Prof. Hauske Kapitel 2: C Grundlagen 5 Allgemeiner Programmaufbau Direktiven ▪ Für den Preprocessor ▪ Beginnen mit # ▪ z.B. #include Funktionen ▪ Programme gliedern sich in Funktionen, wie Bausteine ▪ Selbst geschrieben oder aus Bibliotheken ▪ Reihe von Anweisungen mit einem bestimmten Namen ▪ Die Hauptfunktion main muss es immer geben Anweisungen ▪ Funktionsaufruf printf("C oder nicht C: Das ist hier die Frage.\n"); ▪ Rückgabewert return 0; IT1 Prof. Hauske Kapitel 2: C Grundlagen 6 Aufgabe ▪ Was sind die Direktiven und was die Anweisungen im folgenden Programm? ▪ Welche Ausgabe erzeugt das Programm? #include int main(void) { printf("Parkinsons Gesetz:\nArbeit dehnt sich "); printf("in genau dem Maß aus,\n"); printf("wie Zeit für ihre Erledigung zur Verfügung steht.\n"); } IT1 Prof. Hauske Kapitel 2: C Grundlagen 7 Ausgabe von Zeichenketten (Strings) ▪ printf("C oder nicht C: Das ist hier die Frage.\n"); ▪ Kein automatischer Zeilenumbruch, neue Zeile mit \n ▪ printf("Dieser Ausdruck steht "); printf("in einer Zeile\n"); ▪ printf("Dieser Ausdruck\n steht in zwei Zeilen.\n"); IT1 Prof. Hauske Kapitel 2: C Grundlagen 8 Kommentare // Kommentiert den Rest einer Zeile aus // Auch so sind // Kommentare // möglich ▪ Kommentare werden nicht ausgeführt, sie dienen der Dokumentation ▪ Jedes Programm sollte sinnvoll kommentiert sein IT1 Prof. Hauske Kapitel 2: C Grundlagen 9 Variablen und Deklarationen Typen ▪ Datentypen z.B.: int und float ▪ Begrenzter Wertebereich: Kleinste und größte Zahl ▪ int (integer, Ganze Zahl) z.B. 0, 1, 395, -2454,... ▪ float (floating-point, Gleitkomma, Dezimaltrennzeichen ist Punkt) z.B. 343.432 Deklarationen ▪ Variablen müssen deklariert werden: Name und Datentyp #include int main(void) { int hoehe, laenge, breite, volumen; float gewinn, verlust; } IT1 Prof. Hauske Kapitel 2: C Grundlagen 10 Zuweisungen ▪ Variablen kann ein Wert zugewiesen werden: hoehe = 8; // Variable mit dem Namen hoehe laenge = 12; breite = 10; // „Reine Zahlen“ wie 8 oder 2.5f werden als literale // Konstanten bezeichet gewinn = 2150.48f; // Gleitkomma volumen = hoehe * laenge * breite; // Multiplikation * ▪ Vor der Zuweisung muss eine Variable deklariert werden! durchmesser = 8; // Falsch! int durchmesser; IT1 Prof. Hauske Kapitel 2: C Grundlagen 11 Variablen ausgeben ▪ Beispiel int hoehe = 8; printf("Hoehe: %d\n", hoehe); // Ausgabe: Hoehe: 8 ▪ %d ist ein Platzhalter für int Variablen ▪ %f ist ein Platzhalter für float Variablen (default 6 Nachkommestellen) ▪ %.2f ist ein Platzhalter für float Variablen (mit 2 Nachkommestellen) ▪ Beispiel float spannung = 24.372; printf("U: %.2f V\n", spannung); // Ausgabe: U: 24.37 V ▪ Mehrere Variablen ausgeben int laenge = 2, breite = 3; printf("L: %d, B: %d\n", laenge, breite); IT1 Prof. Hauske Kapitel 2: C Grundlagen 12 Ausdrücke ausgeben ▪ printf kann nicht nur Variablen, sondern auch ganze Ausdrücke ausgeben volumen = hoehe * laenge * breite; printf("%d\n", volumen); liefert das gleiche Ergebnis wie printf("%d\n", hoehe * laenge * breite); IT1 Prof. Hauske Kapitel 2: C Grundlagen 13 Debugger: Fehlersuche ▪ Breakpoints: Programm an gewünschten Stellen anhalten ▪ Einzelschrittmodus: Programm Zeile für Zeile ausführen ▪ Mouseover: Kommentare und Werte von Variablen anzeigen ▪ Werte von Variablen anpinnen IT1 Prof. Hauske Kapitel 2: C Grundlagen 14 Eingaben lesen ▪ Benutzereingaben können mit scanf_s eingelesen werden − f steht für formatiert und _s steht für secure (sicher) − scanf_s liest eine formatierte Zeichenkette ein (string) und interpretiert diese als entsprechende Zahl (z.B. int oder float) int i; float x; scanf_s("%d", &i); // liest ganze Zahl ein; speichert in i scanf_s("%f", &x); // liest Kommazahl ein; speichert in x − Achtung: scanf ist die alte, unsichere Version von scanf_s und sollte nicht mehr verwendet werden IT1 Prof. Hauske Kapitel 2: C Grundlagen 15 Variablen und Konstanten // Berechnet das Volumen einer Kugel #include #define PI 3.14f // symbolische Konstante PI int main(void){ float vol, rad = 2.0f; // Variablen vol und rad // literale Konstante 2.0f (nur Zahl) vol = 4.0f / 3.0f * PI * rad * rad * rad; printf("Volumen: %.2f\n", vol); } ▪ Division mit / (Achtung: Auf Datentyp float achten!) ▪ Mit wie vielen Nachkommastellen wird das Ergebnis ausgegeben? IT1 Prof. Hauske Kapitel 2: C Grundlagen 16 Symbolische und literale Konstanten Symbolische Konstanten ▪ können mit #define (Präprozessor Direktive, macro definition) definiert werden ▪ sind Konstanten, die einen Namen tragen. An die Stelle eines Namens setzt der Compiler dann die der symbolischen Konstanten zugeordnete literale Konstante ein, also z. B. eine „reine Zahl“ wie die Zahl 10. Goll, Joachim; Dausmann, Manfred (2014): C als erste Programmiersprache. Wiesbaden: Springer Fachmedien Wiesbaden. IT1 Prof. Hauske Kapitel 2: C Grundlagen 17 Identifiers Gültige Namen für Variablen, Funktionen,... ▪ mal10 get_next_char _erledit Ungültige Namen für Variablen, Funktionen,... ▪ 10mal get-next-char C ist case-sensitive, d.h. folgende Variablen sind alle unterschiedlich ▪ job joB jOb jOB Job JoB JOB Auf Lesbarkeit von Variablennamen achten; C hat keine Längenbegrenzung ▪ drehzahlmotorvorderradlinks ▪ DrehzahlMotorVorderradLinks ▪ drehzahl_motor_vorderrad_links IT1 Prof. Hauske Kapitel 2: C Grundlagen 18 Aufgabe Welche C Identifier sind nicht gültig und warum? a) 100_flaschen b) _100_flaschen c) ein_hundert_flaschen d) flaschen_zu_je_ein_hundert_ IT1 Prof. Hauske Kapitel 2: C Grundlagen 19 Schlüsselwörter (keywords) ▪ Dürfen nicht als Variablen- oder Funktionsnamen verwendet werden ▪ Groß-/Kleinschreibung darf nicht verändert werden auto float signed _Alignas (since C11) break for sizeof _Alignof (since C11) case goto static _Atomic (since C11) char if struct _Bool (since C99) const inline (since C99) switch _Complex (since C99) continue int typedef _Generic (since C11) default long union _Imaginary (since C99) do register unsigned _Noreturn (since C11) double restrict (since C99) void _Static_assert (since C11) else return volatile _Thread_local (since C11) enum short while extern https://en.cppreference.com/w/c/keyword IT1 Prof. Hauske Kapitel 2: C Grundlagen 20 Aufgabe Welche der folgenden Wörter sind Keywords in C? a) for b) If c) main d) printf e) while IT1 Prof. Hauske Kapitel 2: C Grundlagen 21 Aufgabe: Hands-on Programmierung Schreiben Sie ein Programm, dass das Volumen einer Kugel mit dem Radius 𝒓 = 𝟐𝒎 mit der Formel 𝑽 = 𝟒/𝟑 ∙ 𝝅 ∙ 𝒓³ berechnet und das Ergebnis in Kubikmeter mit zwei Nachkommastellen auf der Konsole ausgibt. Vorgaben ▪ Korrekt angelegtes VS C-Projekt ▪ Verwendung von vorlage.c als Code-Vorlage ▪ Beschränkung auf Inhalte von Kapitel 2 IT1 Prof. Hauske Kapitel 2: C Grundlagen 22 Lösung: Hands-on Programmierung #include // Ein-/Ausgabefunktionen #define PI 3.14f // symbolische Konstante PI int main(void) { float vol, rad = 2.0f; // Volumen und Radius in Meter vol = 4.0f / 3.0f * PI * rad * rad * rad; // Formel Kugelvolumen printf("Volumen: %.2f m^3\n", vol); // 2 Nachkommastellen return 0; // Erfolgreich beendet } IT1 Prof. Hauske Kapitel 2: C Grundlagen 23 Debugger Demo #include // Standard Eingabe/Ausgabe Funktionen int main(void) { float x = 2.3f; float y = 3.7; int a = x + y printf("%d %d %d\n", x, y, a); printf("%d\n\n", a) } IT1 Prof. Hauske Kapitel 2: C Grundlagen 24