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
|
AWP: 8 Typumwandlungen in C++
In C und C++ gibt es zwei Arten von arithmetischen Datentypen:
- ganzzahlige Typen, z.B. int, char, bool (unsigned, short, long)
- Gleitkommatypen, z.B. float, double (long)
Automatische Typumwandlung
(Implizite Typumwandlung)
Bei Berechnungen in Programmen gelten folgende Regeln:
Wenn verschiedene Datentypen beteiligt sind, wird das Ergebnis automatisch in den leistungsfähigeren Typ umgewandelt.
Beispiel:
int i_zahl1 = 5;
float f_zahl2 = 7.5;
double d_zahl3 = 10.3;
ergebnis = i_zahl1 * f_zahl2; // Ergebnis: 37,5 -- Typ: float
ergebnis = f_zahl2 + d_zahl3; // Ergebnis: 70,80 -- Typ: double
Wenn verschiedene Datentypen beteiligt sind, wird das Ergebnis automatisch in den leistungsfähigeren Typ umgewandelt.
Wenn nur gleiche Datentypen beteiligt sind, hat auch das Ergebnis diesen Datentyp.
Beispiel:
int i_zahl1 = 12;
int i_zahl2 = 4;
ergebnis = i_zahl2 / i_zahl1; // Ergebnis: 0 -- Typ: int
Erzwungene Typumwandlung
Wenn man einen bestimmten Datentyp erzwingen möchte, schreibt man diesen Typ in Klammern vor den Ausdruck, der berechnet wird.
Beispiel:
int i_zahl1 = 5;
int i_zahl2 = 6;
ergebnis = (float) i_zahl1 / i_zahl2; // Ergebnis: 0,8333 -- Typ: float
Diese erzwungene Umwandlungsoperation nennt man auch cast / casting / TypCasting
AWP: 7 Variablen in C++
Um Daten kurzzeitig (oder auch längerfristig) speichern zu können, muss zuerst Speicherplatz geschaffen (genauer: reserviert) werden. Zusätzlich muss auf diesen reservierten Platz noch zugegriffen werden können. Hierfür gibt es Variablen. Sie stehen für den Inhalt eines Speicherplatzes. Zuerst muss eine Variable definiert werden. Nach der Definition ist Speicherplatz für die Variable entsprechend ihrer Größe im Arbeitsspeicher reserviert. Danach kann ihr ein Wert zugewiesen werden. Welcher Wert zugewiesen werden darf, ist vom Variablentyp abhängig.
5. Beschreiben Sie kurz den Unterschied zwischen einer Variablendefinition und Variablendeklaration!
Die Variablentypen
Variablentyp, Beinhaltet und Größe in Byte
Wenn eine Variable definiert und gleich danach initialisiert, d.h. ein Wert zugewiesen wird,...
Eine Zuweisung alleine würde folgendermaßen aussehen:
Es gibt zusätzlich auch noch die Deklaration von Variablen.
- int
- Pos. und neg. Ganzzahl
- 2/4 Byte
- float
- Gleitkommazahl
- 4 Byte
- double
- genauere Gleitkommazahl
- 8 Byte
- char
- Buschstabe
- 1 Byte
- bool
- "enthält" den Wert true oder false.
- 1 Byte
- unsigned char
- Werte von 0 bis 255
- 1 Byte
- unsigned int
- Ganzzahlen 0 bis 65535
- 2/4 Byte
z.B. int i_zahl;... dann "sagt" man dem Compiler: "Hallo Compiler! Ich will, dass du Speicherplatz für eine Integer-Variable mit dem Namen i_zahl reservierst".
Wenn eine Variable definiert und gleich danach initialisiert, d.h. ein Wert zugewiesen wird,...
int i_zahl = 7;...dann teilt man dem Compiler mit: "Ich will, dass diese Variable mit Namen i_zahl vom Typ int (bis hierher ist eine Definition) mit dem Wert 7 vorbelegt werden soll".
Eine Zuweisung alleine würde folgendermaßen aussehen:
i_zahl = 7;Jetzt "weiß" der Compiler, dass der bereits definierten (aber möglicherweise noch nicht initialisierten) Variablen i_zahl der Wert 7 zugewiesen werden soll.
Es gibt zusätzlich auch noch die Deklaration von Variablen.
extern int i_zahl;Mit dieser verdeutlicht man: "Es gibt irgendwo eine Variable mit Namen i_zahl vom Typ int. Aber wo, verrate ich dir noch nicht". Hier wird kein Speicher angelegt, sondern nur lediglich bekannt gegeben, dass es diese Variable gibt. Mittels extern kann man eine Variable nur deklarieren, denn ohne extern wäre es ja eine Definition. Wo das Sinn macht, erfahren Sie noch später.
Anmerkung
Um einer char Variablen einen Buchstaben zuzuweisen darf man nicht
Denn "a" ist ein String (Zeichenkette) und 'a' ein Zeichen.
char c_zeichen = "a";schreiben, sondern man muss
char c_zeichen = 'a';schreiben.
Denn "a" ist ein String (Zeichenkette) und 'a' ein Zeichen.
Aufgaben
- Überlegen Sie sich, wie man die Variablendefinition und die -initialisierung mit einer Lagerkiste in einem Hochregallager (z.B. bei Ikea) vergleichen kann!
- Bitte kreuzen sie an, ob die folgende Aussage wahr oder falsch ist:
- Mit i_zahl = 7; wird eine Integer-Variable mit dem Namen i_zahl angelegt und mit dem Wert 7 initialisiert.
- float f_fliesskommazahl; reserviert 4 Byte im Arbeitsspeicher.
- In bool b_richtig = 1; steht bool b_richtig für die Definition und = 1 für die Initialisierung der Variablen.
- char c_zeichen = "B"; definiert eine Character-Variable mit dem Namem c_zeichen und dem Wert/Zeichen B.
- unsigned int i_zahl = -1; definiert eine Integer-Variable mit dem Namen i_zahl und dem Wert -5.
- Jede Variable muss bei der Definition einen Typ und einen Namen besitzen.
- Erstellen Sie gemeinsam mit ihrem Banknachbarn einen Merksatz, was eine Variablendefinition ist!
- (Unter einer Variablendefinition versteht man, ...)
- Welche Variablen benötigt man, um für zwei Kandidaten die Stimmen zu zählen, alle abgegebenen Stimmen zu ermitteln und daraus die prozentuale Stimmverteilung zu berechnen? Bitte überlegen Sie sich auch eine sinnvolle Benennung für diese Variablen!
- Beschreiben Sie kurz den Unterschied zwischen einer Variablendefinition und Variablendeklaration!
- Erstellen Sie einen eigenen "Wahlomat" welcher die Stimmen für zwei Kandidaten einliest und das prozentuale Stimmverhältnis ausgibt!
- Bitte berechnen sie die Werte der Integer-Variablen i_zahl1 und i_zahl2. Rechnen sie dabei jeweils mit den Werten der vorangegangenen Zeile weiter.
- Operator = (Zuweisung)
- i_zahl1 = 7; i_zahl2 = 8;
- Operator + (Addition)
- i_zahl1 = i_zahl2 + 3;
- Operator - (Subtraktion)
- i_zahl2 = i_zahl1 - 3;
- Operator * (Multiplikation)
- i_zahl2 = i_zahl2 * 3;
- Operator / (Division)
- i_zahl2 = i_zahl1 / 3;
- Operator % (Modulo, Rest einer Division)
- i_zahl1 = i_zahl2 % 3;
Merke:
Bei einer Zuweisung steht die Variable, der ein Wert zugewiesen werden soll, immer auf der linken Seite vom "="!
Lösungen
1. Überlegen Sie sich, wie man die Variablendefinition und die -initialisierung mit einer Lagerkiste in einem Hochregallager (z.B. bei Ikea) vergleichen kann!
- Lösung noch nicht verfügbar
2. Bitte kreuzen sie an, ob die folgende Aussage wahr oder falsch ist:
- Mit i_zahl = 7; wird eine Integer-Variable mit dem Namen i_zahl angelegt und mit dem Wert 7 initialisiert.
- Falsch. Die Variable ist nicht angelegt.
- float f_fliesskommazahl; reserviert 4 Byte im Arbeitsspeicher.
- Wahr.
- In bool b_richtig = 1; steht bool b_richtig für die Definition und = 1 für die Initialisierung der Variablen.
- Wahr.
- char c_zeichen = "B"; definiert eine Character-Variable mit dem Namem c_zeichen und dem Wert/Zeichen B.
- Falsch. "B" ist ein String. Das Zeichen ist 'B'.
- unsigned int i_zahl = -1; definiert eine Integer-Variable mit dem Namen i_zahl und dem Wert -5.
- Falsch. Die Variable wurde als unsigned definiert.
- Jede Variable muss bei der Definition einen Typ und einen Namen besitzen.
- Wahr.
3. Erstellen Sie gemeinsam mit ihrem Banknachbarn einen Merksatz, was eine Variablendefinition ist!
- Unter einer Variablendefinition versteht man, dass einer Variablen ein Speicherbereich zugeteilt wird.
4. Welche Variablen benötigt man, um für zwei Kandidaten die Stimmen zu zählen, alle abgegebenen Stimmen zu ermitteln und daraus die prozentuale Stimmverteilung zu berechnen? Bitte überlegen Sie sich auch eine sinnvolle Benennung für diese Variablen!
- int i_stimme_1; // Um die Stimmen von Kandidat 1 zu zählen.
- int i_stimme_2; // Um die Stimmen von Kandidat 2 zu zählen.
- float f_verteilung_1; // Um die prozentuale Stimmverteilung von Kandidat 1 zu berechnen.
- float f_verteilung_2; // Um die prozentuale Stimmverteilung von Kandidat 2 zu berechnen.
5. Beschreiben Sie kurz den Unterschied zwischen einer Variablendefinition und Variablendeklaration!
- Mit der Deklaration bennenen wir eine Variable und machen diese dem Compiler bekannt.
- Der Definition ist die Reservierung des Speicherbereich für die Variable.
6. Erstellen Sie einen eigenen "Wahlomat" welcher die Stimmen für zwei Kandidaten einliest und das prozentuale Stimmverhältnis ausgibt!
#include <iostream>
using namespace std;
int main() {
/*
* VARIABLES
*/
int i_stimmen_1, i_stimmen_2;
float f_verteilung_1, f_verteilung_2;
/*
* INPUT
*/
cout << "Bitte geben Sie die Stimmenzahl fuer Kandidat 1: ";
cin >> i_stimmen_1;
cout << "Bitte geben Sie die Stimmenzahl fuer Kandidat 2: ";
cin >> i_stimmen_2;
/*
* 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;
cout << "Prozentuale Stimmverteilung." << endl;
cout << "Kandidat 1: " << f_verteilung_1 << "%" << endl;
cout << "Kandidat 2: " << f_verteilung_2 << "%" << endl;
/*
* END OF PROGRAM
*/
getchar();
getchar();
return (0);
}
7. Bitte berechnen sie die Werte der Integer-Variablen i_zahl1 und i_zahl2. Rechnen sie dabei jeweils mit den Werten der vorangegangenen Zeile weiter.
- i_zahl1 = 7; i_zahl1 = 8;
- i_zahl1 enthalt 7
- i_zahl2 enthalt 8
- i_zahl1 = i_zahl2 + 3;
- i_zahl1 enthalt 11
- i_zahl2 enthalt 8
- i_zahl2 = i_zahl1 - 3;
- i_zahl1 enthalt 11
- i_zahl2 enthalt 8
- i_zahl2 = i_zahl2 * 3;
- i_zahl1 enthalt 11
- i_zahl2 enthalt 24
- i_zahl2 = i_zahl1 / 3;
- i_zahl1 enthalt 11
- i_zahl2 enthalt 3
- i_zahl1 = i_zahl2 % 3;
- i_zahl1 enthalt 0
- i_zahl2 enthalt 3
domingo, 6 de abril de 2014
sábado, 5 de abril de 2014
AWP: 5 Übungen - Ausgaben mit cout
Sie haben schon “cout” etwas kennengelernt. Sie wissen, dass man die Bibliothek “iostream” einbinden muss.
Überprüfen Sie die nachfolgenden Verwendungen von “cout”! Kann man es so einsetzen, oder nicht?
Nehmen Sie an, dass folgende Variablen existieren und mit Werten belegt sind!
int a = 5; int b = 6;
Verwendungen:
Ausgabe oder Richtigkeit
Überprüfen Sie die nachfolgenden Verwendungen von “cout”! Kann man es so einsetzen, oder nicht?
Nehmen Sie an, dass folgende Variablen existieren und mit Werten belegt sind!
int a = 5; int b = 6;
Verwendungen:
Ausgabe oder Richtigkeit
- cout << "Hallo Welt!" << " Du bist schoen!";
- cout << 'Hallo Welt!' <<;
- cout << "Das ergebnis ist: " << a;
- cout << "Das ergebnis ist: " << a + b;
- cout << "Das ergebnis ist: " << 'a' + 'b';
- cout << "Das ergebnis von: " << a << '+' << b << " lautet: " << a + b;
Merke
- Variableninhalte werden ohne Hochkommata oder Gänsefüßchen ausgegeben!
- Hinter Zeichen (genauer Zeichenkonstanten) stehen Zahlenwerte!
- Einzelne Zeichen werden in Hochkommata gesetzt, Zeichenketten (Strings) in Gänsefüßchen!
- In einem Stream können Variableninhalte, Zeichen und Strings mit "<<" aneinandergereiht werden!
Lösungen
- cout << "Hallo Welt!" << " Du bist schoen!";
- Hallo Welt! Du bist schoen!
- cout << 'Hallo Welt!' <<;
- Es funktioniert nicht, weil Hochkommata benutzt sind.
- cout << "Das ergebnis ist: " << a;
- Das ergebnis ist: 5
- cout << "Das ergebnis ist: " << a + b;
- Das ergebnis ist: 11
- cout << "Das ergebnis ist: " << 'a' + 'b';
- Es funktioniert, aber das Ergebnis wird nicht, das erwartet. ASCII-Code von Zeichen 'a' und 'b' benutzt sind.
- cout << "Das ergebnis von " << a << '+' << b << " lautet: " << a + b;
- Das ergebnis von 5 + 6 lautet: 11
AWP: 4 Kommentare
Kommentare sind Passagen innerhalb des Programms die vom Compiler ignoriert werden. Sie dienen hauptsächlich dazu, Hinweise zur Funktion eines Programms zu geben. Kommentare Können an beliebiger Stelle innerhalb eines Programms stehen und (fast) beliebige Zeichen enthalten.
Ein Programm ist meistens nur so gut, wie seine Kommentare sind. Wie zu kommentieren ist, erfahren Sie später im Schuljahr. Dies gehört zum Thema “Programmierrichtlinien”. In ihrer Firma sollten solche Programmierrichtlinien existieren! Erkundigen Sie sich doch einfach einmal danach!
Mehrzeilige Kommentare
Der Mehrzeiligen-Kommentar wird eingeleitet durch die beiden Zeichen /* und durch die Zeichen */ beendet. Zwischen diesen beiden Zeichen darf kein Leerzeichen stehen. Und alles was zwischen diesen Zeichenfolgen steht wird vom Compiler ignoriert.
/* Einsprungsfunktion */
int main() {
/*
int var = 10;
cout << "var hat den Wert: " << var << endl;
*/
/* Einen einfachen Text augeben */
cout << "Ein einfacher Text" << endl;
}
Mithilfe dieses Kommentars ist es also möglich, mehrere Anweisungen z.B. für Testzwecke außer Kraft zu setzen. Dazu wird einfach vor den entsprechenden Anweisungen der Kommentar geöffnet und am Ende der Anweisungen der Kommentar wieder geschlossen.
Einzeilige Kommentare
Außer dem Kommentartyp /*…*/ bietet C++ noch den Typ //. Alles, was nach den beiden Zeichen // bis zum Zeilenende folgt, wird vom Compiler als Kommentar betrachtet. Auch hier darf zwischen den Zeichen // kein Leerzeichen stehen.
// Einsprungsfunktion
int main() {
// int var = 10;
int var = 20;
cout << "var hat den Wert: " << var << endl;
}
AWP: 3 Ausgaben mit "cout"
Damit die Anweisung “cout” verwendet werden kann, muss die entsprechende Bibliothek “iostream” für Streams eingebunden werden:
#include <iostream>
Streams sind Datenströme, die z.B. auf Bildschirmen oder Drucker ausgegeben werden können.
#include <iostream>
Streams sind Datenströme, die z.B. auf Bildschirmen oder Drucker ausgegeben werden können.
Ausgabe von Text und Zeichen
Sollen Texte (bestehend aus mehreren Zeichen, auch als Strings bezeichnet) ausgegeben werden, so folgt nach cout zunächst der Operators <<. Im Anschluss an diesen Operator folgt dann der auszugebende Text, der in Anführungszeichen (Gänsefüßchen) einzuschließen ist.
Mehrere Texte können durch entsprechende Wiederholungen des Operators << und Textes ausgegeben werden. Am Ende einer cout-Anweisung wird kein automatischer Zeilenvorschub eingefügt. Für den Zeilennumbruch können Sie auch den Manipulator endl in den Ausgabestream einfügen.
// Das Programm
int main() {
// Ausgabe eines einzelnen Textes mit Zeilenvorschub
cout << "Aber Hallo!" << endl;
// Ausgabe mehrerer Texte
cout << "Mein " << " erstes" << " Programm";
// Einzelne Zeichen ausgeben
cout << '!' << '?';
// und fertig!
}
Programmausgabe
Einzelne Zeichen müssen -wie in obigen Beispiel- lediglich in Hochkommata ( ' ) eingeschlossen werden. Werden Sie -fälschlicherweise- in Gänsefüßen eingeschlossen, so werden sie als Strings behandelt.
Suscribirse a:
Entradas (Atom)