C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| static int eingabeZahl() { int i = 1; while ( i <= 2 ) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); break; } i++; int eingegebeneZahl = System.Convert.ToInt32(Console.ReadLine()); return eingegebeneZahl; } |
i wird hier immer als 1 fest gelegt und das wird sich auch nicht ändern.
Entweder, du gibst i als Parameter der Methode, oder du erstellt eine Klasse mit einer globalen Variable i.
Die erst Variante ist in diesem Fall sinnvoller.
Die while-Schleife "missbrauchst" du hier als if-Abfrage.
Die Schleife soll immer so lange laufen, bis i nicht mehr kleiner oder gleich 2 ist, da du die Schleife aber sofort abbrichst, läuft die sowieso nicht weiter, egal was für ein Wert i hat.
Es funktioniert zwar, ist aber schlecht programmiert, deshalb formuliere es so:
C#-Quelltext
1: 2: 3: 4:
| if (i <= 2) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); } |
Das hat den selben Effekt und ist auch leichter zu verstehen, nämlich so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| WENN (Bedingung) { Tue etwas } SONST { Tue etwas } |
Also im Endeffekt so:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| if (Bedingung) { } else { } |
Das i++ steht da auch sinnlos rum.
Wenn es einen Effekt haben soll, dann muss es in der Schleife (ohne break) stehen, aber dann zählt sie einfach so und es wird keine Eingabe abgefragt. Daher kann das eigentlich ganz verschwinden.
Der Rest ist soweit ok.
Zu deinem Programm:
Dort ist bisher alles korrekt. Mein erstes Rechner-Programm habe ich allerdings anders geschrieben und zwar habe ich für jede Operation eine Methode erstellt, die sowohl Eingabe, als auch Berechnung erledigt.
Das hat den Vorteil, dass ich für jede Operation einen passenden Text angeben kann, wie z.B. "Geben sie bitte den ersten Summanden ein:"
Deine Variante geht aber auch, allerdings musst du die Methode da zwei mal aufrufen.
Wenn ich eine solche Methode schreibe, dann würde ich das wie folgt machen:
Eine Zähl-Schleife zählt einfach von 1 bis 2. Die Syntax sieht so aus:
C#-Quelltext
1: 2: 3:
| for (int i = START; i < Start; i++) { } |
i muss dabei kein integer sein, allerdings ist das die hauptsächliche Verwendungsart.
Danach steht die Bedingung, die angibt, bis wann gezählt wird. Es ist egal, was da steht, es muss aber eine Bedingung sein und deinen Ansprüchen genügen. Pass dabei auf, dass du keine Endlos schleife erstellst.
Und als letztes steht, wie gezählt wird. Wenn du schreibst i = i + 2 dann zählt die Schleife in zweier-Schritten. i = i + 1 ist das gleiche, wie i++.
Du erstellst also eine Schleife, die bei 0 beginnt und bei solange zählt, wie i kleiner 2 ist.
Und dazwischen fügst du dann deinen Text ein, der ausgegeben werden soll.
Warum die Schleife bei 0 beginnt und nur bis 1 zählen darf, kommt gleich.
Die Zahlen müssen aber auch noch gespeichert werden und das würde ich mit einem Array machen.
Wenn du Arrays noch nicht kennst, eine kleine Erklärung:
Ein Array ist eine Sammlung von Variablen mit dem gleichen Typ.
Die Syntax sieht so aus:
C#-Quelltext
1:
| TYP[] VariablenName = new TYP[LängeDesArrays]; |
In deinem Fall reicht ein Array vom Typ i und der Länge 2, also das:
C#-Quelltext
1:
| int[] zahlen = new int[2]; |
Da passen nun zwei Zahlen rein.
Aufgerufen werden sie so:
C#-Quelltext
Damit kannst du dann die Variable ändern oder ausgeben lassen.
Was das nun bringt:
Du kannst dieses Array als ganzes ausgeben und im eigentlichen Programm ganz einfach abfragen.
Allerdings musst du dabei beachten, dass der Computer immer mit 0 anfängt, zu zählen.
Wenn du zwei Elemente hast, gibt es also entweder zahlen[0] oder zahlen[1].
Was du also machst, ist folgendes:
C#-Quelltext
1: 2: 3: 4: 5:
| for (int i = 0; i < 2; i++) { Console.WriteLine("Geben sie die " + (i + 1) + "te Zahl ein:"); zahlen[i] = Convert.ToInt32(Console.ReadLine()); } |
Da hat die Schleife zwei Aufgaben:
1. Zeigen, welche Zahl gesucht ist
2. Das Array an der richtigen Stelle mittels Index aufrufen.
Im Text hab ich (i + 1) geschrieben, weil der PC ja bei 0 beginnt, zu zählen, wir aber bei 1.
Nun wird als zwei mal gefragt, welche Zahl. Dabei wird gezeigt, welche Zahl gebraucht wird und die eingeben Zahl wird in ein Array gespeichert.
Dieses Array müssen wir dann noch mit return zurück geben (vorher noch den Rückgabetyp auf int[] setzen) und können die Zahlen dann auswerte. Beispiel:
C#-Quelltext
1:
| ergebnis = zahlen[0] + zahlen[1]; |
Die komplette Methode sieht also so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| static int[] GetNumbers() { int[] zahlen = new int[2];
for (int i = 0; i < 2; i++) { Console.WriteLine("Geben sie die " + (i + 1) + "te Zahl ein:"); zahlen[i] = Convert.ToInt32(Console.ReadLine()); }
return zahlen; } |
Im Programm sieht das dann so aus:
C#-Quelltext
1: 2:
| int[] zahlen = GetNumbers(); ergebnis = zahlen[0] + zahlen[1]; |
Hab jetzt mehr geschrieben, als nötig, aber gerade Arrays sind ständig sehr wichtig in der Programmierung, und alles andere, was ich erklärt hab, auch, deshalb hab ich mir mal die Arbeit gemacht^^
Lies das Buch:
openbook.galileocomp...sharp_2010/index.htm
Was da nicht drin steht, brauchst du auch nicht^^
Ist kostenlos und sehr gut erklärt, eigentlich ein Buch, was neben sehr guten Erklärungen und ausreichend Grundwissen gleich noch Beispiele liefert.
Zu Kaufen gibts das auch, dann hast du das halt als Buch mit CD, auf der die Programme sind, aber ich habs bis jetzt noch nicht gebraucht.
Wenn du also wirklich programmieren lernen willst, lies das. Es liest sich gut, hätte ich auch erst nicht gedacht^^
Ach und noch was:
Ist das nicht das falsche Forum für so Fragen? ^^
Solche Fragen bitte zukünftig hier rein:
www.c-sharp-forum.de...technologien_82.html
ok?