In C# heißt das foreach-Schleife:

int[] array = new int[] { 1, 2, 3, 4 };
foreach(int i in array)
    ...

Also grob übersetzt: "Für jedes Element i des Typs int im Array array" soll die Schleife ausgeführt werden. In Java funktioniert das genauso:

for(int i : array)
    ...

Es wird also jedes Element im Feld array durchlaufen, wobei array ein Array, aber auch ein anderer Container (Listen etc.) sein kann. Während eines Schleifendurchlaufs ist die Variable i verfügbar, die den Wert des aktuellen Felds enthält. Beim ersten Durchlauf wäre i also array[0], dann array[1] usw.

...zur Antwort

Ich will mich jetzt nicht subjektiv auf die Einfachheit von Prolog beziehen, sondern lieber Fakten vorlegen: Prolog oder allgemein die logische Programmierung ist ein interessantes Konzept, allerdings eher was für Akademiker. Nicht, weil man damit nichts machen könnte, es ist nur eben für allgemeine Programmieraufgaben ungeeignet und entstammt eher theoretischen Überlegungen. Wenn du dich mit so was abstraktem beschäftigen willst, gerne, wenn du dir aber wirklich die Hände schmutzig machen willst und was "richtiges" programmieren willst, ist eine Sprache wie C deutlich geeigneter.

Noch eine kleine Anmerkung: Tatsächlich kann man mit Prolog deutlich weniger machen als mit einer "normalen" Sprache wie C, da man für ein komplett anderes Programmierparadigma schwieriger Bibliotheksanbindungen erstellen kann. Außerdem lohnt sich das nicht, weil nur sehr wenige Leute praktisch mit Prolog programmieren. Fürs praktische Programmieren solltest du dir eine der folgenden Sprachen aussuchen: C, C++, C#, Java.

...zur Antwort

Erst mal: Es gibt einen Unterschied zwischen .cs (C#-Code) und .cpp (C++-Code).

Wenn du C++-Code kompilieren willst, brauchst du einen Compiler. dazu lädtst du dir am besten den MinGW runter, gehst mittels

cd Verzeichnis

in dessen Installationsverzeichnis, wechselst in den Ordner "bin" und gibst dann ein

g++ pfad/zu/meiner/datei.cpp -o /wo/soll/die/exe/hin.exe

Unter letzerem Pfad findet sich dann die fertige, ausführbare EXE-Datei.

...zur Antwort

Mit #include kann man alle Dateien importieren, die auf .h enden (evtl. auch andere). In solchen Dateien stehen Definitionen, die man in mehreren Quelldateien (.c oder .cpp) benötigt, beispielsweise Funktionsdefinitionen. Damit weiß der Compiler dann in einer Codedatei, die diese Headerdatei (.h) einbindet (mit #include), dass das, was in dem Header drinsteht, irgendwo existiert. Wo genau, ist erst mal egal. Ein Beispiel:

//In der Headerdatei:
void foo(int var);

Somit kennt der Compiler in jeder Quelldatei, die diese Headerdatei einbindet, die Funktion foo() und weiß deren Parameter und Rückgabewert. Erst ganz zum Schluss wird dann nach der tatsächlichen Implementierung gesucht, die in irgend einer anderen Quelldatei liegen kann.

Diese andere Quelldatei kann man entweder direkt mit hineinlinken (linken = verknüpfen; also die "leeren" Definitionen werden mit den "echten" Funktionen verknüpft) oder erst mal nicht weiterverwenden. Wenn man sie nicht weiterverwendet, kann man sie noch als Bibliothek einsetzen - sie gehört dann nicht wirklich zum Projekt, sondern ist ein eigenes Projekt; man kann die Funktionen aber dennoch verwenden, wenn man sie hineinlinkt.

Jetzt überlegst du dir, was für Funktionen du eigentlich so brauchst. Diese gliederst du dann je nach Verwendungszweck, also z.B. kann eine Quelldatei Funktionen für den Timer, eine andere Funktionen zum Ansteuern von LEDs enthalten. Die Funktionen schreibst du dann in Headerdateien, damit auch andere Dateien sie aufrufen können. Wie das geht, wird in jedem halbwegs zu gebrauchenden Buch zu C erklärt.

...zur Antwort

Variablennamen werden während des Kompiliervorgangs verwendet und später, also im fertigen Programm, nicht mehr. Da ist das dann mit Speicheradressen gelöst, weil dein Prozessor mit Strings nichts anfangen kann. Somit kannst du keine Variablennamen erstellen, während das Programm ausgeführt wird, weil deine CPU schlicht nichts damit anfangen kann. Du kannst aber sog. Assoziative Arrays verwenden; die sollten ziemlich genau das erledigen können, was du brauchst. Mit C++ kann man da den Datentyp std::map verwenden:

std::map<std::string, int> aA;
aA["Variable1"] = 42;
int i = aA["Variable1];

Ich hoffe mal, das stimmt soweit... jedenfalls weiß ich nicht genau, wie das in C# geht.

...zur Antwort

Nun, da sieht man mal wieder, wozu GOTO doch gut war...

Aber in Java geht das nun mal nicht. Wie du vielleicht schon weißt, kommt man mit dem Schlüsselwort break nur aus der momentan aktuellen Schleife heraus. Daher musst du das Problem anders lösen: Entweder, du beendest das gesamte Programm mit

System.exit(0);

Statt 0 kannst du auch einen anderen Wert angeben; wenn das Programm nicht mit 0 beendet wird, heißt das meist, dass ein Fehler aufgetreten ist. Dem Nutzer kannst du das damit zeigen.

Wenn es nach den zwei Schleifen noch mal weitergehen soll, nimmst du am besten eine Variable hinzu, die immer auf true ist, bis beide Schleifen abgebrochen werden sollen:

boolean breakVar = true;

for(...; (deineBedingung) && breakVar; ...)
{
    ...
    for(...; (deineBedingung2) && breakVar; ...)
    {
        ...
        if(programmBeendenBedingung)
        {
            breakVar = false;
            break;
        }
    }
}
... //hier geht es jetzt weiter
...zur Antwort
if(button.getBackground().getRGB() == Color.GREEN.getRGB())
{
    ...
}

Mit button.getBackground() wird die Hintergrundfarbe abgerufen. Ich bin mir nicht sicher, ob die Color-Klasse den "=="-Operator überlädt (oder ob das in Java überhaupt nötig ist), weshalb hier erst die Farbe in einen RGB-Wert umgewandelt wird. Dieser wird dann mit dem RGB-Wert für die Farbe Grün verglichen - zwischen die beiden geschweiften Klammern schreibst du dann, was passieren soll, wenn die Farbe grün ist.

...zur Antwort

C++ kann man bedingt für die App-Entwicklung unter Android einsetzen, wenn du zusätzlich zum SDK auch noch ein sog. NDK von Google installierst. Allerdings ist der Funktionsumfang stark eingeschränkt, weshalb man nur dann C++ einsetzen sollte, wenn es nicht anders geht, also wenn beispielsweise eine sehr hohe Ausführungsgeschwindigkeit gefordert wird. Die kann oft nur mit C/C++ erreicht werden, wenn man nicht gerade Assembler programmiert.

Für Android-Apps eignet sich Java deutlich besser. Auf normalen PCs ist C/C++ meiner Meinung nach die beste Wahl; leider hat sich Google aber für Java entschieden, weshalb du nur mit Java vollen Zugriff auf alle Funktionen hast. Mit Java wirst du auch die meiste Hilfe in Foren etc. zum Thema Android-Programmierung bekommen, und die Dokumentationen sind auch in Java gehalten.

Wenn du also wirklich nur Android-Apps programmieren willst, dann solltest du auf Java umsteigen. Das sollte dir aber nicht allzu schwer fallen, da Java sehr viele Elemente aus C++ übernommen hat. Die großen Unterschiede liegen eher in der Standartbibliothek und in fortgeschrittenen Themen wie der Mehrfachvererbung, die C++ unterstützt, Java aber nicht.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.