wir haben gerade in der 11. Klasse (Informatik) Java dran. Wir sind gerade bei der Caesar-Verschlüsselung. Wir müssen selber ein Programm dazu schreiben, da ich aber nichts verstanden habe, habe ich ein Problem. Kann mir da vielleicht jemand sein Programm mit ein paar Erklärungen dazu schicken? Das wäre sehr hilfreich, danke!
Dir wird keiner einfach die Hausaufgaben machen... Zumindest nicht ohne Bezahlung.
Du musst schon sagen, was du nicht verstehst (so genau wie möglich...) und Ansätze posten.
Also, wir müssen ein Programm schreiben, was nach der Caesar-Verschlüsselung einen Klartext (in einem jTextField) in einen Chiffretext (jTextArea,...) überführt. Und wir lernen Java halt nur mit JFrame. Ich muss sozusagen einen jButton programmieren, der das verschlüsselt.
public class Caesar {
private static final String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
/**
* Verschiebt einen Text um ein Offset. Nur Grossbuchstaben oder Leerzeichen
* sind erlaubt.
*
* @param text
* {@link String} to be shifted.
* @param offset
* Offset for the shift can be negative.
* @return {@link String}
*/
public static String shift(String text, int offset) {
text = text.toUpperCase();
if (text == null || !text.matches("[A-Z ]+"))
throw new IllegalArgumentException("Only space or letters are allowed!");
StringBuffer tmp = new StringBuffer();
for (int i = 0; i < text.length(); i++)
tmp.append(rotate(text.charAt(i), offset));
return tmp.toString();
};
private static int getIdOfChar(char c) {
for (int i = 0; i < alphabet.length(); i++) {
if (c == alphabet.charAt(i))
return i;
}
return -1;
}
private static char rotate(char c, int step) {
int id = getIdOfChar(c);
id += step;
if (id < 0)
return alphabet.charAt(alphabet.length() + id);
return alphabet.charAt(id % alphabet.length());
}
}
Code:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class CaesarPanel extends JPanel implements ActionListener {
private static String[] buttonLabel = { "ENCRYPT", "DECRYPT" };
private JButton ok = new JButton(buttonLabel[0]);
private JTextField key = new JTextField("5");
private JTextField input = new JTextField("TESTWORD");
CaesarPanel(int width, int height) {
setPreferredSize(new Dimension(400, 50));
input.setPreferredSize(new Dimension(150, 40));
key.setPreferredSize(new Dimension(50, 40));
ok.setPreferredSize(new Dimension(100, 40));
add(key);
add(input);
add(ok);
ok.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
boolean ok = input.isEnabled();
int offset = 0;
try {
offset = Integer.parseInt(this.key.getText());
} catch (NumberFormatException exp) {
offset = 2; // default value
key.setText(offset + "");
}
if (!ok) {
offset = -offset;
this.ok.setText(buttonLabel[0]);
} else
this.ok.setText(buttonLabel[1]);
input.setEnabled(!ok);
this.key.setEnabled(!ok);
input.setText(Caesar.shift(input.getText(), offset));
}
}
Code:
import javax.swing.JFrame;
public class start {
public static void main(String[] args) {
JFrame f = new JFrame();
CaesarPanel p = new CaesarPanel(500, 500);
f.getContentPane().add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setResizable(false);
f.setTitle("CAESAR");
f.setVisible(true);
}
}
So, ich bin der Lehrer und freue mich, dass den Jungs und Mädels schön geholfen wird. Es ist ja auch ok wenn die sich informieren, solange sie es dann auch verstehen. Ich lerne ja auch noch was dabei ;-) Soweit Danke an Blender3D
So, ich bin der Lehrer und freue mich, dass den Jungs und Mädels schön geholfen wird. Es ist ja auch ok wenn die sich informieren, solange sie es dann auch verstehen. Ich lerne ja auch noch was dabei ;-)
Man trifft selten Menschen, die einräumen selbst noch zu lernen obwohl Sie selbst Lehrende sind.
Das macht einen ausgezeichneten Lehrer aus. Meinen Respekt
Ich selber lerne mit jeder Hilfestellung die ich hier im Forum gebe.
Man lernt im Leben nie aus.
Der Schüler wird es beeeestimmt alles verstehen. Er hat ja auch so viel Eigeninitiative gezeigt und schon gute Ansätze geliefert.
</ironie>
Ich denke er wird sich den Code nicht mal anschauen.
Das klingt nach einer Herausforderung für den Lehrer den Schüler zu motivieren.
Bei meinem Studium war es mir eine sehr große Hilfe bei anderen Studierenden, die Lösungen bereits hatten, nachzufragen und mir helfen zu lassen. Ich versuchte den Code oder den mathematischen Hintergrund zu verstehen und aus mir wurde ein brauchbarer Programmierer. Das hätte ich ohne Hilfe nicht geschafft. Mein Professor meinte dazu: Wie man zu einer Lösung kommt ist nicht so wichtig, Hauptsache ist man versteht was man gemacht hat.
Und in den Proseminaren stellte es sich schnell heraus wer es verstanden hat und wer nicht.
Der Punkt ist: Ihm war es egal wenn jemand mit einem Plagiat zur Prüfung antrat. Wenn er den Code richtig erklären konnte war er glücklich. Vielmehr er forderte uns sogar dazu auf, uns gegenseitig zu helfen.
Dank dieses ausgezeichneten Lehrers habe ich etwas gelernt. ( Er hat seinen Job, jemanden zu lehren sehr gut gemacht.)
Es gibt leider sehr viele schlechte Lehrer, die nicht wirklich das Lehren im Fokus haben.
Mit Erfahrung in beiden Seiten seh ich das etwas anders: die, die abgeschrieben haben und erklären konnten, hätten meist entweder direkt eine mindestens gleichwertige Lösung schreiben können, oder können sowas zwar schön erklären, haben aber nicht verstanden, wie man sowas schreibt.
Letztere lernen dann nie das selbst schreiben, und fallen später extrem zurück oder müssen immer von anderen mitgetragen werden. An denen ist dann oftmals das, was eine Uni lehren soll, vorbei gegangen.
(Mit Abschreiben meine ich, fertige Lösung als Vorlage nutzen/kopieren und nicht ein „wie hast du das an der Stelle gelöst“, was ich unter helfen verstehe. Ausnahmen mag es sicherlich geben.
Aus dem Grund findet man von mir hier auch keine fertigen Lösungen.)
1) Es sollte einem Lehrer das Wichtigste sein, dass der Schüler etwas lernt. 2) Ein Plagiat kann hilfreich sein sofern man daraus lernt. 3) ein Professor sollte erst ein Problem mit einem Plagiat haben, wenn es ohne Verstand benutzt wird.
Das anders zu sehen steht Dir natürlich frei.
Und wir waren damals ein Team von 4 Studenten. Alle haben Ihr Handwerk gelernt. Dank unseres Professors.
Neben Code schreiben und Mathematik habe ich außerdem gelernt teamfähig zu arbeiten.
Ich verstehe die Aussage durch aus, hab ich auch selbst schon oft genug gehört
Ich kann aber nur aus meiner Erfahrung spreche, und die sagt mir, dass man mit reinem abschreiben (nicht nur helfen lassen!) nie zu einem wirklichen Verständniss des Codes.
Und vor allem fällt dann oft nicht der ganze Prozess, der zu dem Code führt, weg - und das ist durchaus mit das wichtigste.
Die Erfahrung kommt durch etwa 300-400 Studenten, sowohl in Einzel-, als auch Gruppenprojekten.
(Ich habe btw durchaus auch abgeschrieben, von Verständniss war da aber dann nicht viel...)
Das ist ein Schande-Thema denn es wurde einfach eine Lösung hingeklatsch ohne Java-Tag's!....
Dadurch lernt er doch nicht und der Lehrer hat recht.... Caesar ist so elementar dass es jeder können muss.
Auch wenn er nach Schule nicht Informatik Papst werden will
das MUSS sein. @Blender3D überdenke Dein Vorgehen.