|
- Intuitives, schrittweises Entwickeln des Algorithmus,jedoch keine exakte Formalisierung der Darstellung undüberwiegend nicht mathematische Problemstellungen.
- Einführen formalisierter Darstellungen undmathematischer Formeln.
- Darstellung in Struktogrammen. Gliederung in Module undUnterprogramme.
- Entwickeln der Algorithmen bis zu einer rein formalenStufe (höhere Programmiersprache).
- Codieren. Gegebenenfalls Umsetzen in Assemblersprache.
|
Beispiel: Algorithmus für die Lösung einer quadratischenGleichungDefinition des Problems:Ermittle die Lösung einer quadratischen Gleichung der Form A*X2 + B*X + C = 0
Formalisieren des Problems:
- Festlegung: Es sollen nur reele Lösungen betrachtet
werden.
- Diskriminante D = B2 - 4AC bestimmt Art und
Zahl der Lösungen:
- D = 0: eine reelle Doppellösung
- D > 0: zwei reelle Lösungen
- D < 0: keine reelle Lösung
- Betrachtung, falls A = 0: Gleichung wird linear
B = 0: |
falls C != 0 --> Wiederspruch ( !=
bedeutet "ungleich") |
|
falls C = 0 --> Allgemeingültig |
B != 0: |
Lösung: X = -C/B |
Struktogramm:
Anmerkungen zum Struktogramm:
- Folgende Variablen sind zu definieren:
Lösungsvariablen: X1, X2
Eingabewerte: A, B, C
Diskriminante: D
- Die Ausdrücke sind bereits in linearer Notation
aufgeschrieben, wie sie von allen Programmiersprachen
verwendet wird. sqrt() ist eine
Standardfunktion, welche die Quadratwurzel ermittelt.
- Textausgaben sind in "..." eingeschlossen. Wird
bei der Ausgabe ein Variablenname angegeben, wird dessen
Wert ausgegeben.
- Bei der Berechnung von B2 wird B*B verwendet.
Programm in C-Notation:
Die Sprachelemente von C werden erst in den kommenden Kapiteln
behandelt. Daher soll Ihnen diese Auflistung nur einen
Vorgeschmack bieten.
/* Quadratische Gleichung */
#include <stdio.h>
#include <math.h>
void main(void)
{
float a, b, c, d, xl, x2; /* Variablenvereinbarung */
printf("Bitte geben Sie die Werte fuer a, b und c ein: ");
scanf("%f %f %f", &a, &b, &c); /* Einlesen der Parameter */
if (a == 0.0)
{ /* Lineare Gleichung */
if (b != 0.0)
{
x1 = -c/b;
printf("Lineare Gleichung: x = %f \n", x1);
}
else
{
if (a != 0.0)
printf("Widerspruch!\n");
else
printf("Allgemeingültig!\n");
}
}
else /* Quadratische Gleichung */
{
d = b*b - 4*a*c; /* Diskriminante berechnen */
if (d == 0.0)
{
x1 = -b/(2*a);
printf("eine reelle Lösung x = %f \n", x1);
}
else
{
if (d > 0.0)
{
x1 = (-b + sqrt(d)/(2*a);
x2 = (-b - sqrt(d)/(2*a);
printf("Zwei reelle Lösungen: x1 = %f, x2 = %f \n", x1, x2);
}
else /* d < 0 */
printf("Keine reelle Lösung\n");
}
}
}
|
|
|