| Kategorie | Name | Symbol | Auswertreihenfolge | Priorität |
|---|---|---|---|---|
| Monadisch | ||||
| Post-Inkrement | ++ | Links nach Rechts | 2 | |
| Post-Dekrement | -- | Links nach Rechts | 2 | |
| Adresse | & | Rechts nach links | 2 | |
| Bitweises NOT | ~ | Rechts nach links | 2 | |
| Typumwandlung | (typ) | Rechts nach links | 2 | |
| Logisches NOT | ! | Rechts nach links | 2 | |
| Negation | - | Rechts nach links | 2 | |
| Plus-Zeichen | + | Rechts nach links | 2 | |
| Prä-Inkrement | ++ | Rechts nach links | 2 | |
| Prä-Dekrement | -- | Rechts nach links | 2 | |
| Multiplikativ | ||||
| Modulo | % | Links nach Rechts | 3 | |
| Multiplikation | * | Links nach Rechts | 3 | |
| Division | / | Links nach Rechts | 3 | |
| Additiv | ||||
| Addition | + | Links nach Rechts | 4 | |
| Subtraktion | - | Links nach Rechts | 4 | |
| Bitweises Shift | ||||
| Linksschift | << | Links nach Rechts | 5 | |
| Rechtsschift | >> | Links nach Rechts | 5 | |
| Relational | ||||
| Kleiner als | < | Links nach Rechts | 6 | |
| Kleiner-gleich | <= | Links nach Rechts | 6 | |
| Größer als | > | Links nach Rechts | 6 | |
| Größer-gleich | >= | Links nach Rechts | 6 | |
| Gleich | == | Links nach Rechts | 7 | |
| Nicht gleich | != | Links nach Rechts | 7 | |
| Bitweise | ||||
| AND | && | Links nach Rechts | 8 | |
| XOR | ^ | Links nach Rechts | 9 | |
| OR | || | Links nach Rechts | 10 | |
| Logisch | ||||
| AND | && | Links nach Rechts | 11 | |
| OR | || | Links nach Rechts | 12 | |
| Ternär | ||||
| Bedingter Ausdruck | ?: | Rechts nach Links | 13 | |
| Zuweisung | ||||
| Arithmetisch | = | Rechts nach Links | 14 | |
| += | Rechts nach Links | 14 | ||
| -= | Rechts nach Links | 14 | ||
| *= | Rechts nach Links | 14 | ||
| /= | Rechts nach Links | 14 | ||
| %= | Rechts nach Links | 14 | ||
| Shift | >>= | Rechts nach Links | 14 | |
| <<= | Rechts nach Links | 14 | ||
| Bitweise | &= | Rechts nach Links | 14 | |
| |= | Rechts nach Links | 14 | ||
| ^ | Rechts nach Links | 14 |
lunes, 28 de abril de 2014
AWP: 15 Operator-Prioritäten und Auswertungsreihenfolge
domingo, 27 de abril de 2014
AWP: 14 Operatoren in C++
Arithmetische Operatoren
Die erste Klasse der Operationen sind die arithmetichen Operationen. Sie braucht man, um mit Zahlen zu rechnen.| Operator | Int | Float | Operationen | Beispiel | Ergebnis |
|---|---|---|---|---|---|
| + | × | × | Vorzeichen (unäres Plus) | +7 | 7 |
| - | × | × | Vorzeichen (unäres Minus) | -8 | -8 |
| + | × | × | Addition (binäres Plus) | 5 + 6 | 11 |
| - | × | × | Subtraktion (binäres Minus) | 9 - 3 | 6 |
| * | × | × | Multiplikation | 8 * 4 | 32 |
| / | × | × | Division (bei Integer-Zahlen abgerundet!) | 1 / 2 | 0 |
| / | × | × | Division (sobald Gleitkommazahlen dabei, als Gleitkommadivision durchgeführt) | 1.0 / 2 | 0.5 |
| % | × | Modulo (Rest bei IntegerDivision, Vorzeichen des Dividenden bleibt | -7 % 3 | -1 | |
| = | × | × | Zuweisung (linker Seite wird der Wert der rechten zugewiesen) | a = 8 | 8 |
Relationale Operatoren (Vergleichsoperatoren)
Die relationalen Operatoren führen Vergleiche durch und ergeben wie die logischen Operatoren Wahrheitswerte, d.h. 0 oder 1.| Operator | Int | Float | Operation | Beispiel | Ergebnis |
|---|---|---|---|---|---|
| < | x | x | Vergleich auf kleiner | x < y | 1, wenn x kleiner y, 0 sonst |
| > | x | x | Vergleich auf größer | y > x | 1, wenn y größer x, 0 sonst |
| <= | x | x | Vergleich auf kleiner oder gleich | x <= y | 1, wenn x kleiner oder gleich y, 0 sonst |
| >= | x | x | Vergleich auf größer oder gleich | y >= x | Wie bei x <= y |
| == | x | x | Prüfung auf Gleichheit | x == y | 1, wenn x und y gleich, 0 sonst |
| != | x | x | Prüfung auf Ungleichheit | x != 43 | 0 wenn x gleich 43, 1 sonst |
Logische Operatoren
Die letzte Klasse an Operatoren sind die logischen Operatoren. Dabei werden Integerzahlen als wahrer Wert interpretiert, wenn sie ungleich Null sind, als falscher Wert sonst. Das Ergebnis ist 1 falls wahr. 0 falls falsch. Auch hier ist eine Anwendung auf Fließkommazahlen möglich, aber nicht sinnvoll.| Operator | Int | Float | Operation | Beispiel | Ergebnis |
|---|---|---|---|---|---|
| && | x | Logisches UND | i && j | 1, wenn i und j ungleich 0, 0 sonst | |
| || | x | Logisches ODER | a || b | 0 wenn a und b gleich 0, 1 sonst | |
| ! | x | Logisches NOT (Negation) | !q |
Da logische Werte in C++ nichts anderes sind als Integerzahlen, kann man mit ihnen auch rechnen. Dabei kann man z.B. folgenden Trick nutzen:
a = 5 + !b *7;Dieser Ausdruck weist a den Wert 5 oder 12 zu, je nachdem ob b Null ist oder nicht (falls b nicht Null, ist !b = Null und !0 ist 1). Man sollte sich allerdings im klaren darüber sein, dass solche Tricks der Lesbarkeit des Programms schaden!
sábado, 26 de abril de 2014
AWP: 13 Übung Parkscheinautomat
Parkscheinautomat für 15 und 30 Minuten mit OK-Taste
Hr. Oliver Platin - HasdwareHerr Platin meldet sich nochmals:
Liebe Kollegen,
leider muss ich sie nochmals belästigen!
Die erste Erweiterung von Kundenseite ist schon fällig:
Die Parktaste P kann nun zweimal für 30 Minuten Parkzeit gedrückt werden.
Anschließend muss wieder mit der OK-Taste bestätigt werden.
Vielen Dank!
Lösung
StruktogrammQuellcode:
Sehen Sie die Quellcode in http://pastebin.com/keKzvBzc.
domingo, 20 de abril de 2014
AWP: 12 Entscheidungen (if, if...else, ...)
Allgemeines zu Kontrollstrukturen
Bei einem Algorithmus kommt es ganz entscheidend darauf an, in welcher Reihenfolge die einzelnen Anweisunen durchgeführt werden. Üblicherweise werden Anweisungen in der Reihenfolge ihres Vorkommens im Programm ausgeführt. Jede höhere Programmiersprache bietet grundlegende Strukturelemente zur Steuerung des Programmflusses an:- die Sequenz (eine Folge von Anweisungen)
- die Selektion (= Entscheidungen oder bedingte Verzweigung)
- die Iteration (= Wiederholung)
- den Unterprogrammaufruf
Sie sind die grundlegenden Ablaufarten der Programmierung überhaupt. Grundlegend in zweifacher Hinsicht.
Zum einen gelangt man beim Zerlegen noch so umfangreicher Programmabläufe immer auf diese vier Programmstrukturen als Grundmuster. Zum anderen kann jeder zur Problemlösung erforderliche Programmablauf durch geeignetes Anordnen dieser vier Programmstrukturen konstruiert werden.
Entscheidungen (Selektionen) in C++
Die einseitige Entscheidungen: "if"if (Bedingung) {Wenn die Bedingung (ein Ausdruck) erfüllt ist (der Ausdruck hat dann einen Wert verschieden von 0), wird die in geschweiften Klammern eingeschlossene Anweisungsfolge (auch Blockanweisung gennant) ausgeführt. Bei einzelnen Anweisungen können die Klammern entfallen.
Anweisung1;
Anweisung2;
Anweisung3;
...
}
Die Bedingung kann ein Vergleichausdruck sein; in diesem Fall ist das Erebnis 0 (=false) oder 1 (=true).
Struktogramm nach DIN 66261:
Beispiel für eine Bedingung:
(iZahl <= 0)
Wenn iZahl kleiner oder gleich 10 ist, so ist der Wert des Vergleichsausdrucks 1 (also true / Ja) und somit wird die Linke Seite mit den darin enthaltenen Anweisungen ausgeführt.
Die Bedingung kann aber auch ein arithmetischer Ausdruck sein. In diesem Fall kann das Ergebnis 0 oder ungleich 0 sein.
Beispiel:
Beispiele für eine einseitige Auswahl:
Die zweiseitige Auswahl enthält einen if- und einen else-Teil: ist der Ausdruck in den Klammern ungleich 0, wird die Anweisungsfolge des else-Zweiges ausgeführt. Allesweitere gilt wie bei der einseitigen Auswahl.
Die Bedingung kann aber auch ein arithmetischer Ausdruck sein. In diesem Fall kann das Ergebnis 0 oder ungleich 0 sein.
Beispiel:
(3 * iZahl + 6)Wenn iZahl gleich -2 ist, dann ist der Wert des gesamten Ausdrucks 0. In diesem Fall würden die obigen Anweisungen nicht ausgeführt werden! Nur wenn iZahl ungleicht -2 ist und somit der Gesamtausdruck verschieben von 0 ist, so werden die Anweisungen ausgeführt.
Beispiele für eine einseitige Auswahl:
if (iTemperatur < 10)
cout << "Es ist kalt\n";
if (x < 0) {
cout << "x ist negativ! x = " << x << endl;
x = 0;
}
Die zweiseitige Auswahl: "if...else"
if (iZahl < iZahl2) {
iMinimum = iZahl1;
} else {
iMinimum = iZahl2;
}
Die zweiseitige Auswahl enthält einen if- und einen else-Teil: ist der Ausdruck in den Klammern ungleich 0, wird die Anweisungsfolge des else-Zweiges ausgeführt. Allesweitere gilt wie bei der einseitigen Auswahl.
Die zweiseitige auswahl kann auch verschachtelt werden:
if (iTemperatur > 30) {
cout << "Es ist heiß!\n";
else
if (iTemperatur > 0)
cout << "Es friert noch nicht!\n";
else
cout << "Mensch, ist das kalt!\n";
Übrigens: Die Blockklammern { } können bei nur einer Anweisung weggelassen werden.
viernes, 18 de abril de 2014
AWP: 11 Variablen Übungsaufgaben
- Übungs-Programme:
- Berechnung des Flächeninhaltes und/oder Umfangs von Rechteck, Dreieck, Kreis.
- Sehen Sie die Lösung in http://pastebin.com/rZPNcXVs.
- Berechnung des Volumens / Oberflächeninhaltes von Quader, Kugel, Zylinder.
- Sehen Sie die Lösung in http://pastebin.com/F8DH7JtK.
- Beispiel für Wertebereichsüberschreitung:
- Variablen vom Typ unsigned short int.
- Berechnung und Ausgabe von Vorgänger und Nachfolger mit Testwerten 0 und 65535.
- Sehen Sie die Lösung in http://pastebin.com/kEZkGp2q.
- Taschenrechner für zwei Zahlen mit den Ergebnissen Summe & Differenz & Produkt & Quotient.
- Sehen Sie die Lösung in http://pastebin.com/FpRzKt29.
- Schreiben Sie ein Programm, das einen Kleinbuchstaben einliest und anschließend den entsprechenden Großbuchstaben ausgibt!
- Sehen Sie die Lösung in http://pastebin.com/mc49g6Tz.
- Das Normalgewicht n für Männer wird oft aus der Körpergröße k ermittelt:
- n = k - 100
- Das Idealgewicht beträgt dann 95% des Normalgewichts. Lesen Sie die Körpergröße in cm ein und geben Sie das Normalgewicht und das Idealgewicht aus!
- Sehen Sie die Lösung in http://pastebin.com/v0viBRL3.
- Erstellen Sie ein Programm, das für einen verzinsten Geldbetrag den Endbetrag errechnet. Diesem Programm muss das Anfangskapital, der Zinsatz in Prozent und die Laufzeit in Jahren mitgeteilt werden.
- Sehen Sie die Lösung in http://pastebin.com/xUxWQCfp.
- Schreiben Sie ein Programm, das zuerst die Anzahl der Felder eines Schnachbretts einliest, anschließend das Gewicht eines Reiskorns in kg und letztlich das Gewicht des Reises auf dem letzten Feld des Schachfeldes ausgibt, wenn man bei jedem Feld die Anzahl der Reiskörner verdoppelt!
- Sehen Sie die Lösung in http://pastebin.com/8KfEvEPJ.
- Es soll ein Winkel in Grad einlesen und in Bogenmaß ausgegeben werden!
- 90º -> 1.57 Bogenmaß [ sin(1.57) = 1 ]
- 45º -> 0.79 [ sin(0.79) = 0.71 ]
- -277º -> -4.83 [ sin(-4.83) = 0.99 ]
- Sehen Sie die Lösung in http://pastebin.com/KsM0DDzU.
- Ändern Sie die Umrechnung so, dass Bodenmaß in Grad umgerechnet werden!
- Sehen Sie die Lösung in http://pastebin.com/UjWgey3X.
- Die Höhe, bei der ein Fallschirmspringer spätestens die Reißleine ziehenmuss, um unversehrt zu landen, beträgt 650 Meter. Erstellen Sie ein Programm, das die Absprunghöhe als Ganzzahl einliest und dann ausgibt, wie viel sekunden dem Fallschirmspringer bleiben, bis er die Reißleine ziehen muss.
- 3400 -> 23 Sekunden
- 45000 -> 95 Sekunden
- a = g = 9.81 m/s
- v = g * t + v0
- s = 1/2 * g * (t*t) + v0 * t + s0
- Eingabe 650 m -> t = ?
- Sehen Sie die Lösung in http://pastebin.com/J7ZQb9Ba.
lunes, 14 de abril de 2014
AWP: 10 Übung Wahlomat
Ein Kunde Ihrer Firma hat Gefallen an ihrem Wahlomaten gefunden, möchte jedoch eine "schönere" und formatiertere Ausgabe. Er hat Ihnen einen Bildschirmausdruck mitgebracht.
Wie könnte man diese Ausgabe realisieren?
Wie könnte man diese Ausgabe realisieren?
Lösung
Sehen Sie die Lösung in http://pastebin.com/2JArhfzM.
#include <iostream>
using namespace std;
int main() {
/*
* VARIABLES
*/
int i_stimmen_1, i_stimmen_2;
float f_verteilung_1, f_verteilung_2;
/*
* INPUT
*/
cout << endl;
cout << "\t-------------Wahlomat------------" << endl;
cout << endl;
cout << "\tBitte geben Sie die Stimmen 1 an! ";
cin >> i_stimmen_1;
cout << "\tBitte geben Sie die Stimmen 2 an! ";
cin >> i_stimmen_2;
cout << endl;
/*
* LOGIC
*/
// Integer * 1.0 = Float
f_verteilung_1 = i_stimmen_1 * 1.0 / (i_stimmen_1 + i_stimmen_2) * 100.0;
f_verteilung_2 = i_stimmen_2 * 1.0 / (i_stimmen_1 + i_stimmen_2) * 100.0;
/*
* OUTPUT
*/
cout << endl;
// ASCII 201 -> esquina superior izquierda
// ASCII 205 -> horizontal
// ASCII 187 -> esquina superior derecha
// ASCII 186 -> vertical
// ASCII 188 -> esquina inferior derecha
// ASCII 200 -> esquina inferior izquierda
cout << char(201) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (187) << endl;
cout << char(186) << "\tDas amtliche Endergebnis der Stichwahl: " << char(186) << endl;
cout << char(186) << " " << char(186) << endl;
cout << char(186) << "\tErgebnis Kandidat 1 in Prozent:\t"; printf("%.4f", f_verteilung_1); cout << " " << char(186) << endl;
cout << char(186) << " " << char(186) << endl;
cout << char(186) << "\tErgebnis Kandidat 2 in Prozent:\t"; printf("%.4f", f_verteilung_2); cout << " " << char(186) << endl;
cout << char(200) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (205) << char(205) << char (205) << char (205) << char (205) << char (205) << char (205) << char (188) << endl;
/*
* END OF PROGRAM
*/
getchar();
getchar();
return (0);
}
domingo, 13 de abril de 2014
AWP: 9 Konstante
Konstante repräsentiert einen Zahlenwert. In jedem Konstante steht einem Zahlenwert.
Zahlenkonstanten
Beispiele für ganzzahlige Konstante
Gleitkommakonstante
z.B.:
Beispiele für Konstante (Literale)
Boolsche Konstante
- true = 1
- false = 0
Beispiele für ganzzahlige Konstante
| Dezimal | Oktal | Hexadezimal | Datentyp |
| 16 | 020 | 0x10 | int |
| 255 | 0377 | 0xFF | int |
| 32767 | 077777 | 0x7FFF | int |
| 32767 | 0100000U | 0x8000U | unsigned int |
| 10L | L | L | long |
| 27UL | 033UL | 0x1BUL | unsigned long |
Gleitkommakonstante
z.B.:
- 16.32
- 12E-2 -> 0.12
- .45E4 -> 4500
Zeichenkonstante
z.B.:
- 'b' -> Kleinbuchstabe b. Siehe ASCII-Tabelle
- ' ' -> Leerzeichen
- '\'' -> Hochkomma
Escape-Sequenzen
Einzelzeichen
|
Bedeutung
|
ASCII-Zeichen
|
ASCII-Code
|
\a
|
alert
|
BEL
|
07
|
\b
|
backspace
|
BS
|
08
|
\t
|
horizontal tab
|
HT
|
09
|
\n
|
line feed
|
LF
|
0A
|
\v
|
vertical tab
|
VT
|
0B
|
\f
|
form feed
|
FF
|
0C
|
\r
|
carriage return
|
CR
|
0D
|
\”
|
“
|
“
|
22
|
\’
|
‘
|
‘
|
27
|
\?
|
?
|
?
|
3F
|
\\
|
\
|
\
|
5C
|
\0
|
Stringende-Zeichen
|
NUL
|
00
|
Suscribirse a:
Entradas (Atom)


