Computergrundkenntnisse und Programmieren, WS 09/10, Übung 1

Werbung
Computergrundkenntnisse und Programmieren, WS 09/10, Übung 1: Variablen und Loops
Christof Gattringer ([email protected])
Ein Programm das Variablen und Loops verwendet:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Programm fibonacci.cpp
#include <iostream>
using namespace std;
int main() {
int nfib;
int neu, alt, ganzalt;
cout << endl << " Programm fibonacci.cpp" << endl << endl << endl;
cout << " Wie viele Zahlen ? ";
cin >> nfib;
cout << endl;
ganzalt = 0;
alt = 1;
cout << " n = 0 :
cout << " n = 1 :
" << ganzalt << endl;
" << alt << endl;
for (int n = 2; n <= nfib; n++) {
neu = alt + ganzalt;
cout << " n = " << n << "
: " << neu << endl;
ganzalt = alt;
alt = neu;
}
cout << endl;
return 0;
}
1
Variablen:
In C++ können Variablen mit verschiedenem Datentyp vereinbart werden. Die wichtigsten Datentypen sind:
int meinganz1, meinganz2;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ganze Zahlen
double meinreell1, meinreell2;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . reelle Zahlen
char meinzeichen;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ASCII Zeichen
bool meinlogisch;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . logische Variable (true oder false)
Bei Variablennamen unterscheidet C++ zwischen Groß- und Kleinschreibung. Es dürfen keine Schlüsselwörter verwendet werden. Den vereinbarten Variablen können Werte zugewiesen werden:
meinganz1 = 42;
meinreell2 = 17.4019;
Variablen können aber auch gleich bei der Definition mit einem Wert initialisiert werden (dieser
kann später überschrieben werden):
int n = 3;
Durch das Voranstellen von const werden Konstanten definiert, die sich während des Programmablaufes nicht mehr ändern:
const double PI = 3.14159;
Variablen können auch über das Keyboard eingelesen werden:
cin >> meinevariable;
Das Programm wartet so lange bis der Wert eingegeben ist und RETURN gedrückt wurde.
Rechnen mit Variablen:
Grundrechnungsarten werden durch die Operatoren + , - , * , / , % implementiert und durch
die Klammern ( und ) strukturiert:
y
x
z
n
n
n
=
=
=
=
=
=
a*b;
x + 1.0;
(a + b)*summe;
k/j;
k/double(j);
k%j;
(sind k und j integer, wird das als Division ganzer Zahlen interpretiert)
(Konvertierung mit double(j) ergibt eine Division reeller Zahlen)
(modulo Operation: 7 % 4 = 3 )
Außerdem kennt C++ mathematische Funktionen wie sin(), cos(), sqrt(), log(), abs(),
exp(), etc. Dazu muss die Datei cmath mit #include <cmath> eingebunden werden.
y = sin(x);
z = ( sin(x) + cos(x) )*exp(14.3);
2
Der for-Loop:
for-Loops eignen sich gut für wiederholte Operationen wenn bekannt ist wie oft die Schleife durchlaufen wird. Die Syntax ist:
for (int n = startwert; n <= endwert; n++) { Anweisungen }
Die Laufvariable n (kann auch anders heißen) ist dabei nur lokal innerhalb der Schleife definiert. Sie
wird, beginnend vom Startwert, bei jedem Durchlauf um 1 erhöht (n++) bis die Bedingung für das
Weiterlaufen (n <= endwert ) nicht mehr erfüllt ist.
Die Anweisungen die zwischen den geschwungenen Klammern stehen, { Anweisungen }, werden bei jedem Schleifendurchlauf ausgeführt. Die Laufvariable kann dabei in Anweisungen verwendet
werden, sollte aber keinen neuen Wert zugewiesen bekommen.
Der while-Loop:
Bei Schleifen wo am Anfang nicht klar ist wie oft sie durchlaufen werden sind oft while-Loops
besser geeignet. Ihre Syntax ist:
while ( Bedingung ) { Anweisungen }
Hier wird die Bedingung am Anfang jedes Durchlaufes geprüft. Ein Anwendungsbeispiel ist folgender Code, der alle Potenzen von n = 7 ausrechnet die kleiner als eine Million sind:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main() {
int pot = 1;
while ( pot <= 1000000 ) {
cout << pot << endl;
pot = pot*7;
}
return 0;
}
Eine Variante bei der die Bedingung am Ende geprüft wird ist:
do { Anweisungen } while ( Bedingung )
3
Bemerkungen:
Loops können geschachtelt werden, d.h. im Anweisungsblock eines Loops können weitere Loops
enthalten sein.
Das Kommando break im Anweisungsblock eines Loops beendet den Loop und setzt die
Ausführung des Programms bei der ersten Anweisung nach dem Loop fort. Das Kommando continue
im Anweisungsblock erzwingt einen Sprung direkt zum nächsten Schleifendurchlauf. Alle Befehle
im Anweisungsblock nach continue werden ignoriert.
Aufgabe 01.1:
Schreiben Sie ein Programm das die Fakultät n! für n = 1, 2, ... 10 berechnet. Das Programm
muss einen for-Loop enthalten.
Aufgabe 01.2:
Schreiben Sie ein Programm das die Funktionswerte des Sinus an Punkten x ∈ [0, 1] berechnet.
Die Punkte sollen den Abstand ∆x haben welcher vom Programm als freier Parameter eingelesen
wird. Das Programm muss einen while-Loop enthalten. Die Sinusfunktion wird in C++ mit sin(x);
aufgerufen.
Aufgabe 01.3:
Schreiben Sie ein Programm das die Werte von kn für k, n = 1, 2, ... 8 berechnet. Das Programm
muss zwei (geschachtelte) for-Loops enthalten.
4
Herunterladen