Richtig einsteigen mit Visual C# 2013
|
Tipps zur Übung aus Kapitel 5.4
|
Wie fange ich an? |
|
Starten Sie einfach mit dem üblichen Grundgerüst also einem Windows Forms-Projekt,
dessen Hauptfenster Sie mit einem Anzeigeelement - vorzugsweise eine mehrzeilige TextBox-Komponente -
und einem Ausführen-Schalter bestücken (vgl. auch Projekt Demo_Schleifen).
|
|
Wie sieht der nächste Schritt aus? |
|
Berechnen Sie erst einmal die ersten hundert Quadratzahlen und geben Sie sie aus.
Kümmern Sie sich noch nicht um die Pause nach jeder zehnten Quadratzahl.
Falls Sie noch keine Idee haben, mit welcher Konstruktion Sie die Quadratzahlen berechnen sollen,
so lesen Sie noch einmal Kapitel 5.2.
|
|
Wie erkenne ich, wenn zehn Quadratzahlen ausgegeben wurden? |
|
Dies ist vermutlich der schwierigste Part.
Denkbare Lösungen wären:
- Den aktuellen Stand der Ausgabe in einem Feld der Form1-Klasse zu speichern (eine Technik mit der wir uns
allerdings erst in Kapitel 7 näher befassen werden).
- Bei jeden Drücken des Schalters den Schaltertitel zu ändern, z.B. in "Quadratzahlen 11 bis 20", "Quadratzahlen 21 bis 30"
und dann in btn_Ausfuehren_Click() anhand des Schaltertitels entscheiden, welche Quadratzahlen als Nächstes zu berechnen sind.
- Zur Ausgabe eine TextBox-Komponenten verwenden und mittels tb_Ausgabe.Lines.Count() abzufragen, wie viele Quadratzahlen bereits
ausgegeben wurden (wobei zu beachten ist, dass die TextBox immer noch eine Abschlusszeile anhängt).
Ich möchte Ihnen die dritte Variante mit der TextBox-Komponente empfehlen.
|
|
Unschöne Code-Wiederholungen vermeiden |
|
Versuchen Sie Code-Wiederholungen zu vermeiden, indem Sie z.B. für wiederkehrende Aufgaben eigene Methoden schreiben
|
Schritt für Schritt zur Lösung
|
Schritt 1 - Grundgerüst |
|
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Ausfuehren_Click(object sender, EventArgs e)
{
}
}
}
|
|
Schritt 2 - Berechnung der Quadratzahlen |
|
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Ausfuehren_Click(object sender, EventArgs e)
{
tb_Ausgabe.Clear(); // letzte Ausgabe löschen
for (int i = 1; i <= 100; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
}
}
}
|
|
Schritt 3 - Quadratzahlen in Dekaden ausgeben |
|
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Ausfuehren_Click(object sender, EventArgs e)
{
if (tb_Ausgabe.Lines.Count() == 0)
{
for (int i = 1; i <= 10; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
tb_Ausgabe.AppendText("\n");
}
else if (tb_Ausgabe.Lines.Count() == 12)
{
for (int i = 11; i <= 20; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
tb_Ausgabe.AppendText("\n");
}
else if (tb_Ausgabe.Lines.Count() == 23)
{
for (int i = 21; i <= 30; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
tb_Ausgabe.AppendText("\n");
}
...
else
tb_Ausgabe.Clear();
}
}
|
|
Schritt 4 - Code in Methoden auslagern |
|
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Ausfuehren_Click(object sender, EventArgs e)
{
if (tb_Ausgabe.Lines.Count() == 0)
{
ausgabe(1, 10);
}
else if (tb_Ausgabe.Lines.Count() == 12)
{
ausgabe(11, 20);
}
else if (tb_Ausgabe.Lines.Count() == 23)
{
ausgabe(21, 30);
}
...
else
tb_Ausgabe.Clear();
}
///
/// Gibt die Quadratzahlen für die Zahlen von start bis ende aus
///
private void ausgabe(int start, int ende)
{
for (int i = start; i <= ende; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
tb_Ausgabe.AppendText("\n");
}
}
|
|
Schritt 5 - Unnötige else-Blöcke vermeiden |
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace U_Quadratzahlen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Ausfuehren_Click(object sender, EventArgs e)
{
if (tb_Ausgabe.Lines.Count() == 0) // Wenn Ausgabe-TextBox leer dann die ersten zehn Quadratzahlen ausgeben
{
ausgabe(1, 10);
}
else // ansonsten, anhand der bereits ausgegebenen Zeilen berechnen, welches
// die nächsten zehn Quadratzahlen sein sollen
{
int anzahlZeilen = tb_Ausgabe.Lines.Count() - 1; // ziehe von der Zahl der Zeilen in der Ausgabe-TextBox
// 1 ab, weil das Steuerelement eine Abschlusszeile hinzufügt
int dekade = anzahlZeilen / 11; // liefert 1, 2, 3, 4 ...
if (dekade < 10)
{
int start = dekade * 10 + 1;
int ende = start + 9;
ausgabe(start, ende); // die eigentliche Ausgabe übernimmt diese Hilfsmethode
}
else
{
tb_Ausgabe.Clear(); // von Neuem anfangen
}
}
}
///
/// Gibt die Quadratzahlen für die Zahlen von start bis ende aus
///
private void ausgabe(int start, int ende)
{
for (int i = start; i <= ende; ++i)
{
tb_Ausgabe.AppendText(" Das Quadrat von " + i + " ist " + i * i + "\n");
}
tb_Ausgabe.AppendText("\n");
}
}
}
Wenn Sie den obigen Berechnungen der Aufrufwerte für start und ende nicht trauen, erstellen Sie einfach eine Tabelle,
in der Sie festhalten, wie sich die Werte in anzahlZeilen, dekade, start und ende bei jedem Klick auf die
Ausführen-Schaltfläche verändern.
|
Derzeit sind keine Downloads verfügbar. Derzeit sind keine Downloads verfügbar. Derzeit sind keine Downloads verfügbar. Derzeit sind keine Downloads verfügbar.
gehe zu Anfang
|
|