Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren Datentypen für ganzzahlige Werte in C? b) Was versteht man unter expliziter bzw. impliziter Typumwandlung? Nennen Sie jeweils ein Beispiel. Aufgabe 2: Quickies: Operatoren a) Geben Sie die natürliche Abarbeitungsfolge der folgenden Ausdrücke durch entsprechende Klammerung an. j < m && n m + n || !p x * 5 || 5 j <= 10 && < m && x m >= / 5 n && m b) Erläutern Sie den Unterschied zwischen dem Pre-­‐ und Postinkrement-­‐Operator. S. 1 / 6 Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 Aufgabe 3: Kontrollstrukturen: Schleifen Geben Sei folgender Algorithmusschritt: Die Variable i wird auf 10 gesetzt SOLANGE i größer als 0 ist FÜHRE AUS Drucke den Wert i aus i wird dekrementiert ENDE SOLANGE Drucke “Los geht‘s“ aus Übersetzen Sie diesen Algorithmusschritt dreimal in C-­‐Code. 1. Verwenden Sie eine while-­‐Schleife 2. Verwenden Sie eine do-while-­‐Schleife 3. Verwenden Sie eine for-­‐Schleife Zusatz-­‐‑Aufgabe 4: Kontrollstrukturen: Fallunterscheidung Schreiben Sie ein C-­‐Programm, das prüft, ob eine eingegebene Uhrzeit (d.h. Stunde, Minute und Sekunde) korrekt ist. (Optional: Schreiben Sie dafür Testfunktionen wie istStundeKorrekt(...) etc.) Hinweis: Überlegen Sie sich, welche Werte für Stunde sowie Minute und Sekunde zulässig sind. Aufgabe 5: Maximum aus drei Zahlen a) Entwickeln Sie eine C-­‐Funktion max3_1(x, y, z), die das Maximum aus drei übergebenen Zahlen bestimmt und zurückliefert. b) Entwickeln Sie eine C-­‐Funktion max3_2(x, y, z), die das Maximum aus drei übergebenen Zahlen bestimmt und zurückliefert. Verwenden Sie dabei folgende C-­‐ Funktion: int max(int x, int y) { int ergebnis; if ( x > y ) { ergebnis = x; } else { ergebnis = y; } return ergebnis; } c) Schreiben Sie ein C-­‐Hauptprogramm, das mit Hilfe von max3_1(x, y, z) und max3_2(x, y, z) das Maximum aus 0, -­‐5 und 14 bestimmt und am Bildschirm ausgibt. S. 2 / 6 Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 Aufgabe 6: Modularisierung durch Funktionen Modularisieren Sie das angegebene C-­‐Programm, in dem Sie die Berechnung des Mittelwertes als C-­‐Funktion implementieren. Diese neue C-­‐Funktion soll lediglich die Berechnung (mit Eingabe der einzelnen Zahlen), aber selbst keine Ausgabe-­‐Operationen enthalten. Bitte geben Sie das vollständige C-­‐Programm mit der neuen C-­‐Funktion und der adaptierten main-­‐Funktion an. #include <stdio.h> // Ermittlung und Ausgabe des // Mittelwertes einer Zahlenfolge void main(void) { int zahl, summe, i; printf("Mittelwert\n"); summe = 0; i = 1; while (i <= 4) { printf("Zahl = "); scanf("%d", &zahl); summe = summe + zahl; i = i+1; } printf("Mittelwert = %d \n", summe/4); } Aufgabe 7: Aufruf von Funktionen / Call-­‐‑by-­‐‑Value Geben Sie die Ausgabe des folgenden Programms an: #include <stdio.h> int fun(int x, int y) { int res; x = x + y; y++; res = x -­‐ y; printf("fun: x = %d, y = %d, res = %d\n", x, y, res); return res; } void main(void) { int a = 5, b = 2, ergebnis; printf("a = %d, b = %d\n", a, b); ergebnis = fun(a, b); printf("a = %d, b = %d, ergebnis = %d\n", a, b, ergebnis); } S. 3 / 6 Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 Aufgabe 8: Funktionen im Zusammenspiel "Reihenentwicklung" a) Entwickeln Sie einen Algorithmus mit Namen natLog1, der bei seinem Aufruf als Parameter ein reelles z mit 0 < z <= 2 übernimmt, den Wert des natürlichen Logarithmus' mit der übernommenen Genauigkeit epsilon berechnet und zurückliefert. Zur Berechnung des natürlichen Logarithmus soll die nachfolgend aufgeführte Reihenddarstellung verwendet werden: , -./ + ln 1 + 𝑥 = 2 +34(−1) +01 für -­‐1 < x ≤ 1 b) Übersetzen Sie den Algorithmus in eine C-­‐Funktion natLog1(). c) Schreiben sie eine C-­‐Funktion natLog2(), die bei ihrem Aufruf als Parameter ein reelles z mit z > 0 sowie ein reelles epsilon (Genauigkeit) übernimmt, den Wert des natürlichen Logarithmus' mit der übernommenen Genauigkeit epsilon berechnet und zurückliefert. Zur Berechnung des natürlichen Logarithmus wurde die nachfolgend aufgeführte Reihenddarstellung verwendet: ln 𝑥 = 5 ,71 5+01 2 für x > 0 +34 5+01 . ,01 d) Entwickeln Sie eine Hauptfunktion in C (main()) : • die den reellen Wert für z einliest und die Genauigkeit epsilon auf 10 -­‐6 setzt, • die die Funktionen natLog1() und natLog2() mit dem eingelesenen Wert für z aufruft und • die die berechneten Werte auf dem Bildschirm ausgibt. Nicht ausgelastet? Modifizieren Sie das C-­‐Programm so, dass das C-­‐Programm testet, welche der beiden Reihen für ln(2) schneller konvergiert. Zusatz-­‐‑Aufgabe 9: Umrechnung kW nach PS Schreiben Sie ein C-­‐Programm, das folgende Tabellen ausgibt: S. 4 / 6 Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 Die Umrechnung von kW nach PS erfolgt nach der Formel: 1 kW = 1.35962173 PS und soll in einer Funktion kw2ps erfolgen. Ändern Sie das Programm so, dass die Werte in Fünfer-­‐Abständen angezeigt werden, die Ausgabe mit 4 Nachkommastellen erfolgt und Start-­‐ und Endwert variabel sind, also eingegeben werden können. Erstellen Sie jeweils eine Version des Programms mit for-­‐, while-­‐ bzw. do-while-­‐Schleife. Zusatz-­‐‑Aufgabe 10: Umrechnungen Schreiben Sie C-­‐Funktionen, die jeweils folgende Umrechnungen durchführen können: a) von Grad Celsius nach Grad Fahrenheit: °F = (°C * 9/5) + 32 b) von Kilometer nach Meilen: 1 mile = 1,609 km c) von Zentimeter nach Zoll: 1 Zoll = 25,4 mm Schreiben Sie eine Benutzeroberfläche zur Auswahl der Umrechnung. Ein mögliches Auswahlmenü könnte wie folgt aussehen: Umrechnungen: [1] PS -> KW [2] °C -> °F [3] km -> Meilen [4] cm -> Zoll [5] Abbruch -------------------Ihre Auswahl? Nicht ausgelastet? Erweitern Sie Ihr Programm um Umrechnungsfunktionen in die jeweils andere Richtung, d.h. • Von PS nach kW S. 5 / 6 Hochschule Niederrhein Fachbereich 03 Bachelor Informatik Einführung in die Programmierung WS 2015/16 Prof. Dr. Nitsche Prof. Dr. Davids Blatt 5 • von Grad Fahrenheit nach Grad Celsius • von Meilen nach Kilometer • von Zoll nach Zentimeter S. 6 / 6