22.11.2013 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 6.Übung 18.11. bis 22.11.2013 1
BEFRAGUNG Quelle: http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png Laborübung Korcan Kirkici 2 2
heutige Themen Funktionen Gleitkommaformat nach IEEE754 Laborübung Korcan Kirkici 3 3
Funktionen Uns sind schon einige Funktionen bekannt: main() printf () scanf() Definition: Funktion = Unterprogramm Laborübung Korcan Kirkici 4 4
Funktionen Beispiel: Quelle: http://openbook.galileocomputing.de/c_von_a_bis_z/009_c_funktionen _004.htm#mjdf9a752645c46e2afe9989858d1fe010 Laborübung Korcan Kirkici 5 5
Funktionen Aufbau: Rückgabetyp Funktionsname(Parameterliste) { Anweisungen; } Ziel: Bessere Lesbarkeit Wiederverwendbarkeit Fehler schneller auffindbar Laborübung Korcan Kirkici 6 6
Funktionen Analogie zur Mathematik: Parameterliste Funktionsname Rückgabetyp f(x) = 3x f : N R Anweisungen Laborübung Korcan Kirkici 7 7
Funktionen Funktionsaufruf: 1. vor der main-funktion (empfohlen) 2. nach der main-funktion Laborübung Korcan Kirkici 8 8
Funktionsaufruf 1. vor der main-funktion automatische Deklaration (vor dem Aufruf) Quelle: http://openbook.galileocomputing.de/c_von_a_bis_z/009_c_funktionen _004.htm#mjdf9a752645c46e2afe9989858d1fe010 Laborübung Korcan Kirkici 9 9
Funktionsaufruf 2. nach der main-funktion manuelle Deklaration (Vorwärtsdeklaration) Quelle: http://openbook.galileocomputing.de/c_von_a_bis_z/009_c_funktionen _005.htm#mje421cf9136c8c0c1fa1f340719d12e5b Laborübung Korcan Kirkici 10 10
Funktionsaufruf Achtung: int potenz(float, float); keine Bezeichner notwendig Bezeichner stehen in keinem Zusammenhang mit Variablen void == kein Wert int klick1 ()!= int klick1 (void) Funktionsaufruf in einer Funktion möglich außer bei void-rückgabewert: return nicht vergessen! Laborübung Korcan Kirkici 11 11
1. Aufgabe Beschreibe folgende Deklarationen: char wandle_zeichen(char); float potenz(float, float); float potenz(float basis, float exponent); void zeichne_kreis(int radius); int zufallszahl(void); Laborübung Korcan Kirkici 12 12
Gleitkommazahl nach IEEE754 Quelle: http://cms.unikassel.de/unicms/fileadmin/groups/w_221700/edu/ws2012_13/mp_es1/loes3_mp_es1_ws1213.pdf Vorzeichen: positiv=0 negativ=1 Exponent: Exponent (e) + Verschiebekonstante (bias) bias = 127 = 7F 16 = 0111 1111 2 Mantisse: Normalisieren Laborübung Korcan Kirkici 13 13
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =?? Laborübung Korcan Kirkici 14 14
Nachkommstellen-Konvertierung Quelle: http://www.dirkwhoffmann.de/ti/slides/ti1_zahlendarstellung.pdf oder der Rest sich wiederholt oder gewünschte Genauigkeit erreicht ist Laborübung Korcan Kirkici 15 15
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =?? Laborübung Korcan Kirkici 16 16
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =?? 0,53125 * 2 = 1,0625 Rest 1 0,0625 * 2 = 0,125 Rest 0 0,125 * 2 = 0,25 Rest 0 0,25 * 2 = 0,5 Rest 0 0,5 * 2 = 1,0 Rest 1 0,53125 10 =10001 2 Laborübung Korcan Kirkici 17 17
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =10001 2 7543,53125 10 = 1110101110111,10001 2 7543,53125 10 = 1110101110111,10001000000 2 (24 bit) 4.Schritt: Normalisierung 1110101110111,10001000000 = 1110101110111,10001000000 * 2 0 = 1,11010111011110001000000 * 2 12 E = 12 Exponent = 12+127 = 139 10 Mantisse Exponent = 10001010 2 Laborübung Korcan Kirkici 18 18
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =10001 2 7543,53125 10 = 1110101110111,10001 2 7543,53125 10 = 1110101110111,10001000000 2 (24 bit) 4.Schritt: Normalisierung 1110101110111,10001000000 = 1110101110111,10001000000 * 2 0 = 1,11010111011110001000000 * 2 12 E = 12 Exponent = 12+127 = 139 10 Mantisse Exponent = 10001010 2 (5.Schritt: Exponent) Laborübung Korcan Kirkici 19 19
Gleitkommazahl nach IEEE754 Beispiel: 7543,53125 10 1.Schritt: Vorzeichen bestimmen: positiv V=0 2.Schritt: Mantisse (ganzzahlig): 7543 10 = 1110101110111 2 3.Schritt: Mantisse (nicht-ganzzahlig): 0,53125 10 =10001 2 4.Schritt: Normalisierung 5.Schritt: Exponent 139 10 = 10001010 Ergebnis: 7543,53125 10 = 0100 0101 0110 1011 1011 1100 0100 0000 Laborübung Korcan Kirkici 20 20
Gleitkommazahl nach IEEE754 Besonderheiten: NULL : Exponent 0, Mantisse 0 NaN (Not a Number) : NaN Unendlich: Exponent 255 Laborübung Korcan Kirkici 21 21
2. Aufgabe Stelle die Zahl 625,453 10 im IEE 754 Format dar! Laborübung Korcan Kirkici 22 22
2. Aufgabe Stelle die Zahl 625,453 10 im IEE 754 Format dar! Lösung: 625,453 10 = 0100 0100 0001 1100 0101 1100 1111 1101 Laborübung Korcan Kirkici 23 23
3. Aufgabe Taschenrechnerprogramm erstellen unter Berücksichtigung des heutigen Themas (Funktionen). Laborübung Korcan Kirkici 24 24
4. Aufgabe Zahl PI auf verschiedene Weisen berechnen lassen. Input: Berechnungsart Output: PI (optional: Vergleich der Ergebnisse) ---------------------------------------------------------------------------------------------- Srinivasa Ramanujan Aiyangar Leibniz BBP-Reihe Laborübung Korcan Kirkici 25 25
nächste Woche Schleifen for while do-while switch-anweisung random-funktion Laborübung Korcan Kirkici 26 26