1 / 117

Ganze Zahlen

Ganze Zahlen. Die Typen int , unsigned int ; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren. Celsius to Fahrenheit. // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include <iostream> int main() { // Input

venice
Download Presentation

Ganze Zahlen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren

  2. Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include <iostream> int main() { // Input std::cout << "Temperature in degrees Celsius =? "; int celsius; std::cin >> celsius; // Computation and output std::cout << celsius << " degrees Celsius are " << 9 * celsius / 5 + 32 << " degrees Fahrenheit.\n"; return 0; }

  3. Celsius to Fahrenheit // Program: fahrenheit.cpp // Convert temperatures from Celsius to Fahrenheit. #include <iostream> int main() { // Input std::cout << "Temperature in degrees Celsius =? "; int celsius; std::cin >> celsius; // Computation and output std::cout << celsius << " degrees Celsius are " << 9 * celsius / 5 + 32 << " degrees Fahrenheit.\n"; return 0; } 15 degrees Celsius are 59 degrees Fahrenheit.

  4. 9 * celsius / 5 + 32 • arithmetischer Ausdruck • enthält drei Literale, eine Variable, drei Operatorsymbole

  5. 9 * celsius / 5 + 32 • arithmetischer Ausdruck • enthält drei Literale, eine Variable, drei Operatorsymbole Wie ist der Ausdruck geklammert?

  6. Assoziativität und Präzedenz 9 * celsius / 5 + 32 bedeutet (9 * celsius / 5) + 32 Regel 1: Punkt- vor Strichrechnung

  7. Assoziativität und Präzedenz (9 * celsius / 5) + 32 bedeutet ((9 * celsius) / 5) + 32 Regel 2: Von links nach rechts

  8. Assoziativität und Präzedenz Regel 1: Multiplikative Operatoren (*, /, %) haben höhere Präzedenz (“binden stärker”) als additive Operatoren (+, -) Regel 2: Arithmetische Operatoren (*, /, %, +, -) sind linksassoziativ (bei gleicher Präzedenz erfolgt Auswertung von links nach rechts

  9. Assoziativität und Präzedenz -3 - 4 bedeutet (-3) - 4 Regel 3: Unäre +,- vor binären +,-

  10. Assoziativität und Präzedenz Jeder Ausdruck kann mit Hilfe der • Assoziativitäten • Präzedenzen • Stelligkeiten (Anzahl Operanden) der beteiligten Operatoren eindeutig geklammert werden (Details im Skript).

  11. Ausdrucksbäume Klammerung ergibt Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  12. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  13. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  14. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  15. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  16. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  17. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  18. Auswertungsreihenfolge Von oben nach unten im Ausdrucksbaum: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  19. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  20. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  21. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  22. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  23. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  24. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  25. Auswertungsreihenfolge Reihenfolge ist nicht eindeutig bestimmt: 9 * celsius / 5 + 32 9 * celsius (9 * celsius) / 5 ((9 * celsius) / 5) + 32

  26. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Kinder Knoten

  27. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Kinder Knoten

  28. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Kinder Knoten

  29. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Kinder Knoten

  30. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. Kinder In C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert. Knoten

  31. Auswertungsreihenfolge • Gültige Reihenfolge: Jeder Knoten wird erst nach seinen Kindern ausgewertet. • “Guter” Ausdruck: jede gültige Reihen- folge führt zum gleichen Ergebnis Kinder In C++ ist die anzuwend-ende gültige Reihenfolge nicht spezifiziert. Knoten

  32. Arithmetische Operatoren Operand rechts

  33. Arithmetische Operatoren Alle Operatoren: R-Wert × R-Wert R-Wert

  34. Division und Modulus • Operator / realisiert ganzzahlige Division:

  35. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit

  36. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit 9 / 5 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

  37. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit 9 / 5 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

  38. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit 1 * celsius + 32: 15 degrees Celsius are 47 degrees Fahrenheit

  39. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit 1 * 15 + 32: 15 degrees Celsius are 47 degrees Fahrenheit

  40. Division und Modulus • Operator / realisiert ganzzahlige Division: • in fahrenheit.C: 5 / 2 hat Wert 2 9 * celsius / 5 + 32: 15 degrees Celsius are 59 degrees Fahrenheit 47: 15 degrees Celsius are 47 degrees Fahrenheit

  41. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division 5 / 2 hat Wert 2 5 % 2 hat Wert 1

  42. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division • Es gilt immer: 5 / 2 hat Wert 2 5 % 2 hat Wert 1 (a / b) * b + a % b hat den Wert von a

  43. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division • Es gilt immer: • Falls a oder b negativ, so gibt es zwei Möglichkeiten: 5 / 2 hat Wert 2 5 % 2 hat Wert 1 (a / b) * b + a % b hat den Wert von a

  44. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division • Es gilt immer: • Falls a oder b negativ, so gibt es zwei Möglichkeiten: 5 / 2 hat Wert 2 (a / b) * b + a % b hat den Wert von a -5 / 2 hat Wert -2 -5 % 2 hat Wert -1 Rundung gegen 0

  45. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division • Es gilt immer: • Falls a oder b negativ, so gibt es zwei Möglichkeiten: 5 / 2 hat Wert 2 (a / b) * b + a % b hat den Wert von a -5 / 2 hat Wert -3 -5 % 2 hat Wert 1 Rundung gegen unendlich

  46. Division und Modulus • Modulus-Operator berechnet Rest der ganzzahligen Division • Es gilt immer: • Meistens: falls a oder b negativ, so wird gegen 0 gerundet; 5 / 2 hat Wert 2 5 % 2 hat Wert 1 (a / b) * b + a % b hat den Wert von a

  47. Inkrement und Dekrement • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation • geht für einen L-Wert so: expr = expr + 1

  48. Inkrement und Dekrement • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation • geht für einen L-Wert so: • Nachteile: • relativ lang expr = expr + 1

  49. Inkrement und Dekrement • Erhöhen / Erniedrigen einer Zahl um 1 ist eine häufige Operation • geht für einen L-Wert so: • Nachteile: • relativ lang • expr wird zweimal ausgewertet (Effekte!) expr = expr + 1

  50. In-/Dekrement-Operatoren

More Related