Programm zur den Grundrechenarten der Komplexen Zahlen
Hallo Leute ich grüße euch wieder ganz Herzlich.
Ich werde heute nicht neues über die Programmiersprache Posten sondern auf
Nachfrage ein Programm welches von einem User mir gestellt wurde. Es geht um
ein Programm, welches die Grundrechenarten der Komplexen Zahlen in Python
berechnet. Diejenigen, die meine Posts lange folgen, wissen, dass wir , das
Java2Enterprise Team, uns nicht nur mit der Programmiersprache Java
beschäftigen sondern auch mit der Skriptsprache Python. Der User hatte mir
letztens eine Mail geschrieben, dass sein Programm zwar läuft jedoch diese
nicht richtig auswertet. Bevor ich seine Mail mir ganz gelesen habe, wusste ich
schon, um welches Problem es sich bei dem User handelt. Das ist das sogenannte
Semantik Fehler. Dieses Problem hat wenig mit der Funktion des Programms zutun
sondern mehr um die Bedeutung und die Funktionen des Programms. Zum Beispiel
ist das Ergebnis der Rechnung 2 + 2 gleich 4 Jedoch ist das Ergebnis der
Multiplikation 2 * 2 ebenfalls die 4. Das bedeutet, falls ihr in Wirklichkeit
Multiplikation rechnen möchtet jedoch im Programm statt mal plus geschrieben
habt, das Programm die Zahlen/Eingaben addiert. Bei diesem Beispiel handelt es
sich um den Semantischen Fehler. Das Programm läuft zwar jedoch würde es für
die Zahlen ohne die 2 eine ganz andere Lösung liefern.
Anstatt sein Fehler ihm per Email mitzuteilen, habe
ich mich entschieden, diesen mit Anwesenheit von euch mitzuteilen, damit ihr
euch auch ein Überblick verschaffen könnt.
Ich habe die Quelldatei >>Hier<< auf
Github Hochgeladen jedoch möchte ich diese aber ebenfalls hier Eintragen,
sodass ihr euch auch den Syntaktischen Unterschied zwischen Java und Python
vorstellen könnt.
Quelcode in Java
MainKlasse
package java2enterprise;
public class Main {
public static void main(String[] args) {
System.out.println("");
System.out.println("--------------");
System.out.println("PROGRAMM START");
System.out.println("--------------");
System.out.println("");
KomplexeZahlen
verbinden = new KomplexeZahlen();
verbinden.einlesen();
}
}
KomplexeZahlenKlasse (RechenEinheit)
package java2enterprise;
import java.util.Scanner;
public class KomplexeZahlen {
// Methode zu
einlesen der Werte
public static void
einlesen() {
System.out.println("");
Scanner
realTeilZ1 = new
Scanner(System.in);
System.out.println("Geben Sie den Re[Z1] ein:");
double a1 = realTeilZ1.nextDouble();
Scanner imTeilZ1 = new
Scanner(System.in);
System.out.println("Geben Sie den Im[Z1] ein:");
double b1 = imTeilZ1.nextDouble();
Scanner realTeilZ2 = new Scanner(System.in);
System.out.println("Geben Sie den Re[Z2] ein:");
double a2 = realTeilZ2.nextDouble();
Scanner
imTeilZ2 = new Scanner(System.in);
System.out.println("Geben Sie den Im[Z2] ein:");
double b2 = imTeilZ2.nextDouble();
System.out.println("");
System.out.println("Welche Operation möchten Sie ausführen?");
System.out.println("0 = Addition
\t-> [z1 + z2]");
System.out.println("1 = Subtraktion
\t-> [z1 - z2]");
System.out.println("2 = Multiplikation \t-> [z1 * z2]");
System.out.println("3 = Division
\t-> [z1 / z2]");
System.out.println("4 =
Ende");
Scanner
einGabe = new Scanner(System.in);
byte eingabe = einGabe.nextByte();
if(eingabe ==
0) {
addition(a1, b1, a2, b2);
}
else if(eingabe ==
1) {
subtraktion(a1, b1, a2, b2);
}
else if(eingabe ==
2) {
multiplikation(a1, b1, a2,
b2);
}
else if(eingabe ==
3) {
division(a1, b1, a2, b2);
}
else if(eingabe == 4) {
ende();
}
else {
System.out.println("FALSCHE EINGABE");
}
}
public
static void addition(double a1, double b1, double a2,
double b2) {
// Berechnung
der Addition einer Komplexen Zahl in Karthesischer Form
System.out.println("");
double aerg = a1 + a2;
double berg = b1 + b2;
if(b1 + b2 < 0) {
System.out.println("z1 + z2 = "+aerg+" "+berg+"i");
}
else if(b1
+ b2 > 0) {
System.out.println("z1 + z2 = "+aerg+" +
"+berg+"i");
}
System.out.println("");
einlesen();
}
public
static void subtraktion(double a1, double b1, double a2,
double b2) {
// Berechnung
der Subtraktion einer Komplexen Zahl in Karthesischer Form
System.out.println("");
double aerg = a1 - a2;
double berg = b1 - b2;
if(b1 - b2 < 0) {
System.out.println("z1 - z2 = "+aerg+" "+ berg+"i");
}
else if(b1 - b2 > 0) {
System.out.println("z1 - z2
= "+aerg+" - "+berg+"i");
}
System.out.println("");
einlesen();
}
public
static void multiplikation(double a1, double b1, double a2, double b2) {
// Berechnung
der Multiplikation einer Komplexen Zahl in Karthesischer Form
System.out.println("");
double re = (a1 * a2) - (b1 * b2);
double im = (b1 * a2) + (b2 * a2);
if(im < 0) {
System.out.println("z1 * z2 ="+re+" "+im+"i");
}
else if(im > 0) {
System.out.println("z1 * z2 ="+re+" +
"+im+"i");
}
System.out.println("");
einlesen();
}
public
static void division(double a1, double b1, double a2,
double b2) {
// Berechnung
der Division einer Komplexen Zahl in Karthesischer Form
System.out.println("");
double re = ((a1 *
a2) + (b2 * b1)) / ((a2 * a2)+(b2 * b2));
double
im = ((a2 * b1) - (a1 * b2)) / ((a2 * a2)+(b2 * b2));
if(im < 0) {
System.out.println("z1 / z2 ="+re+" "+im+"i");
}
else if(im > 0) {
System.out.println("z1 / z2 ="+re+" +
"+im+"i");
}
System.out.println("");
einlesen();
}
public static void ende() {
System.out.println("");
System.out.println("-------------");
System.out.println("PROGRAMM ENDE");
System.out.println("-------------");
System.exit(0);
}
}
QuellCode in Python
def addition(a1,
b1, a2, b2):
#Berechnung der
Addition einer Komplexen Zahl in Karthesicher Form
print("Addition")
aerg = a1 + a2
berg = b1 + b2
if(b1+b2 < 0):
print("a + b = ", aerg," ", berg,"i")
elif(b1+b2
> 0):
print("a + b = ", aerg," + ", berg,"i")
print("")
main()
def subtraktion(a1,
b1, a2, b2):
#Berechnung der
Subtraktion einer Komplexen Zahl in Karthesischer Form
print("Subtraktion")
aerg = a1 - a2
berg = b1 - b2
if(b1 - b2 < 0):
print("a - b = ", aerg," ", berg,"i")
elif(b1
- b2 > 0):
print("a - b = ", aerg," - ", berg,"i")
print("")
main()
def multiplikation(a1, b1, a2, b2):
#Berechnung der
Multiplikation einer Komplexen Zahl in Karthesicher Form
print("Multiplikation")
re = (a1 * a2) - (b1 * b2)
im = (b1 * a2) + (b2 * a1)
if(im < 0):
print("a * b = ", re, " ", im,"i")
elif(im
> 0):
print("a * b = ", re, " + ", im,"i")
print("")
main()
def division(a1,
b1, a2, b2):
#Berechnung der
division einer Komplexen Zahl in Karthesischer Form
print("Division")
re = ((a1 *
a2) + (b2 * b1)) / ((a2*a2)+(b2*b2))
im = ((a2 * b1) - (a1 * b2)) /
((a2*a2)+(b2*b2))
if(im
< 0):
print("a / b = ", re, " ", im,"i")
elif(im
> 0):
print("a / b = ", re, " + ", im,"i")
print("")
main()
def startKomplexeZahlen():
print("")
print("--------------")
print("PROGRAMM START")
print("--------------")
print("")
main()
def main():
print("0 = Addition")
print("1 = Subtraktion")
print("2 = Multiplikation")
print("3 = Division")
print("4 = Ende")
eingabe = int(input())
if(eingabe == 0):
print("Geben Sie die Komplexen Zahlen in Karthesischer
Form an")
a1 = float(input("Geben Sie den Re[Z1] ein:"))
b1 = float(input("Geben Sie den Im[Z1] ein:"))
a2 = float(input("Geben Sie den Re[Z2] ein:"))
b2 = float(input("Geben Sie den Im[Z2] ein:"))
addition(a1, b1, a2, b2)
elif(eingabe == 1):
print("Geben Sie die Komplexen Zahlen in Karthesischer
Form an")
a1 = float(input("Geben Sie den Re[Z1] ein:"))
b1 = float(input("Geben Sie den Im[Z1] ein:"))
a2 = float(input("Geben Sie den Re[Z2] ein:"))
b2 = float(input("Geben Sie den Im[Z2] ein:"))
subtraktion(a1, b1, a2, b2)
elif(eingabe == 2):
print("Geben Sie die Komplexen
Zahlen in Karthesischer Form an")
a1 = float(input("Geben Sie den Re[Z1] ein:"))
b1 = float(input("Geben Sie den Im[Z1] ein:"))
a2 = float(input("Geben Sie den Re[Z2] ein:"))
b2 = float(input("Geben Sie den Im[Z2] ein:"))
multiplikation(a1, b1, a2, b2)
elif(eingabe == 3):
print("Geben Sie die Komplexen Zahlen in Karthesischer
Form an")
a1 = float(input("Geben Sie den Re[Z1] ein:"))
b1 = float(input("Geben Sie den Im[Z1] ein:"))
a2 = float(input("Geben Sie den Re[Z2] ein:"))
b2 = float(input("Geben Sie den Im[Z2] ein:"))
division(a1, b1, a2, b2)
elif(eingabe == 4):
ende()
def ende():
print("")
print("-------------")
print("PROGRAMM ENDE")
print("-------------")
print("")
a = 0
while(a == 0):
break
Als erstes könnt ihr sehen, dass wir
einen großen Syntax Unterschied zwischen Java und Python haben. Diese ist
nämlich, dass Java einen Umfangreichen Syntax als Python hat. Ich möchte euch
hier die Funktion des Programm in Java und die einzelnen Methoden
interpretieren.
Die Methode einlesen() beschäftigt sich mit der, wie der
Name es schon verrät, mit dem Einlesen der Werte, welches vom Benutzer in die
Konsole eingegebene worden ist. Diese Methode stellt nach dem Erfolgreichen
Eingabe der Werte und Speichern die Fragestellung, welche der vier Grundoperationen
angewendet werden sollen. Man könnte auch als erstes die Operation auswählen
danach die Eingabe der Werte tätigen jedoch würde dies viel Umfangreicher sein
als das Aktuelle Programm. Diese Methode wird auch das EVA-Prinzip genannt. Das
EVA-Prinzip besagt, dass wir unser Programm als erstes etwas eingeben danach
dieses von dem Programm bearbeitet wird und schließlich das Ergebnis der
Verarbeitung ausgegeben wird. Nach dem der Benutzer sich um einen Operation
entschieden hat, wird diese durch die if und else
if Verzweigungen zu der jeweiligen
Methode weitergeleitet. Natürlich werden die davor eingegebenen Werte ebenfalls
mitgeleitet. Schließlich wird das Ergebnis/Verarbeitung der Aufgaben in der
jeweiligen Methode ausgeführt und Ausgegeben. Danach landet der Benutzer wieder
in der Methode fürs einlesen. Diese kann sich aber auch entscheiden das
Programm zu beenden. Der Größte unterscheid zwischen Java und Python ist, dass
wir in Java mehrere Klassen haben. So habe ich die Main-Methode in der Main
Klasse programmiert. Die Main-Klasse wird nur beim Start des Programms
ausgeführt und besitzt deshalb keinen großen Syntax. Ihr könnt die beiden
Programme selber kompilieren und selber tüfteln wie man das vorhandene Programm
noch erweitern kann. Schließlich kann ja der Benutzer etwas anderes als eine
Zahl eingeben zum Beispiel ein String mit dem der Primitive Datentyp nichts
anfangen kann. Ihr könnt, falls der Benutzer solch etwas unternimmt, diese
Fehlermeldung abfangen. Stichwort ist hier try & catch. Viel Spaß. Für Fragen stehe ich gerne zur
Verfügung.
Kommentare
Kommentar veröffentlichen