Allgemeine algorithmen

hallo,

weiß jemand von euch, wo ich im netz infos darüber finde, wie z.b. eine if-then-konstruktion aufgebaut ist? oder die überprüfung ob eine zahl gerade ist (Rest von MOD(2) = oder 0) usw.

wisst ihr was ich meine? und: wo ich infos herbekommen?

danke und gruß
tobias

Hallo Tobias,

also, wo du im Netz Informationen dazu findest, weiß ich so jetzt auch nicht, aber ich vermute mal, daß Google dein Freund ist. Die beiden Fragen kann ich
dir aber gleich beantworten.

weiß jemand von euch, wo ich im netz infos darüber finde, wie
z.b. eine if-then-konstruktion aufgebaut ist?

Struktur einer If-Then-Else-Konstruktion (in C/C++):

if ([Bedingung]) {
[Then-Teil]
} else [
[Else-Teil}
}

Das Programm wertet die Bedingung [Bedingung] aus. Wenn das Ergebnis wahr ist (d.h. true oder 0), wird der [Then-Teil] ausgeführt, ansonsten (d.h. false oder irgendeine Zahl ungleich 0) den [Else-Teil].

Bedingungen können Vergleiche sein: a > b, a 0)

Da gibt es mehrere Möglichkeiten: Die einfachste ist, das genau so zu machen, wie du geschrieben hast, also mit Ausnutzung des Modulo-Operators. In C bzw. C++ würde das dann lauten

if (zahl % 2 == 0) {
[Aktionen, falls Zahl gerade]
} else {
[Aktionen, falls Zahl ungerade]
}

Ich würde hingegen bei allem, was mit zwei zu tun hat, binäre Operationen bevorzugen, in diesem Fall „And“. Das sähe so aus:

if (zahl & 1 == 0) {
[Aktionen, falls Zahl gerade]
} else {
[Aktionen, falls Zahl ungerade]
}

Macht aber dasselbe.

usw.

Wenn du etwas Spezifischer als „usw“ wirst, dann helfe ich gerne! :wink:

wisst ihr was ich meine? und: wo ich infos herbekommen?

Ehrlich gesagt nicht so genau. Was willst du machen? Willst du etwas über Algorithmen lernen? Über die Programmiersprachen? Was ist dein Ziel?

Chris

das problem nochmal anders erklärt
hallo christian,

Ehrlich gesagt nicht so genau. Was willst du machen? Willst du
etwas über Algorithmen lernen? Über die Programmiersprachen?
Was ist dein Ziel?

die algorithmen. wie baue ich eine if-konstruktion, wie andere grundlegende
funktionen (wie eben sowas wie gerade(x) o.ä.), wenn die programmiersprache keine
zur verfügung stellt?

Ich würde hingegen bei allem, was mit zwei zu tun hat, binäre
Operationen bevorzugen, in diesem Fall „And“. Das sähe so aus:
if (zahl & 1 == 0) {
[Aktionen, falls Zahl gerade]
} else {
[Aktionen, falls Zahl ungerade]
}

das ist eine super info! danke! binär ist bestimmt noch schneller als der modulo.
solche infos meine ich auch: wie kann ich was anders machen, damit es
schneller/besser/optimaler wird?

ich bin kein informatiker (hatte zwar zwei semester informatik, aber das ist ja
nicht wirklich viel und zu algorithmen sind wir gar nicht gekommen), aber ein
bisschen programmieren kann ich schon. es reicht zumindest, die grundlegenden
dinge für eine datenbank, php, sql, c, javascript, html (entschuldigung, dass ich
das hier unter „programmierung“ laufen lasse :o)), xml/sgml mit xsl-t usw., vba,
die komplizierteren excel-geschichten - so alles, was einem das allgemeine leben
auf einem pc/mac leichter macht.
jetzt arbeite ich allerdings mit einer datenbank-anwendung (conaktiv /
http://www.conaktiv.de), die grundlegende funktionen gar nicht zur verfügung
stellt. es gibt keine if-then-konstruktion, keine grundlegenden mathematischen
funktionen (wie z.b. betrag(x) o.ä.). und da bastle ich halt so vor mich hin.
aber warum soll ich das rad zweimal erfinden? es gibt sicherlich genug literatur
oder eben internet-seiten, die mir helfen könnten, aber ich weiß nicht so recht,
unter was ich suchen soll, welche stichworte ich eingeben soll, um zum ziel zu
kommen. gegoogelt hab ich schon recht viel, aber ohne ergebnis.

ich hoffe, das war jetzt etwas besser eingegrenzt…

danke schon mal, für deine hilfe
tobias

Hallo,
Du versuchst Lübke mäßig die Dir bekannten Sprachkonstrukte in die neue Sprache zu übersetzen. Das ist jetzt nicht negativ gemeint, denn so gehe ich beim Ertasten einer völlig fremden Sprache auch vor. Mein Vorschlag (nachdem ich mir die WebSite angeschaut habe und eine ganze Palette von Funktionalitäten gefunden habe) ConAktiv bietet Support & vor allem ein Forum. Hier müßte sich gezielt die Info finden lassen, die Du suchst (sozusagen von Leidensgenossen *g*). Ansonsten wie heißt die Sprache in der man dort programmiert genau ? Wenn ich sehen würde, was für sprachliche Mittel dort möglich sind, hätte ich sicher einige Einfälle.

damit es
schneller/besser/optimaler wird?

hängt von der Programmiersprache ab. Ich bin z.B. der Meinung, daß ein vernünftiger C/C++/Java Compiler für „n mod 2“ resp „n % 2“ und „n & 1“ ohnehin den gleichen Code generiert.

Gruss
Enno

Hallo Tobias,

die algorithmen. wie baue ich eine if-konstruktion, wie andere
grundlegende
funktionen (wie eben sowas wie gerade(x) o.ä.), wenn die
programmiersprache keine zur verfügung stellt?

Moment – wenn das eine Datenbank ist, die vielleicht auch nur entfernt etwas mit SQL zu tun hat, dann hast du wunderbare IFs. Die heißen dann nur „WHERE“ in einem Select-Statement.

Ich kenne die von dir benutzte Software/Sprache allerdings gar nicht. Aus nichts eine IF/THEN/ELSE-Konstruktion zu basteln wird dir in der Regel schwer fallen. In Assembler kann man das nett machen: Du sorgst dafür, daß das Ergebnis einer Operation 0 oder 1 ist. Dann willst du machen:

if (ergebnis == 1) {
Zweig_A;
} else {
Zweig_B;
}

In Assembler kann man sich das dann zusammenbasteln, wenn man keine Vergleichsbefehle benutzen möchte, indem man an eine Adresse springt, die man berechnet, also sowas wie „jmp (Adresse + 8 * Ergebnis)“, denn dann springt er für Ergebnis = 1 an eine andere Adresse als für Ergebnis = 0. Ist aber ein Hack.

das ist eine super info! danke! binär ist bestimmt noch
schneller als der modulo.

Da gebe ich Enno recht: Das ist vermutlich genauso schnell wie modulo – allerdings nur für C/C++ und vermutlich Java. Wie das bei dir aussieht – keine Ahnung. Ausprobieren.

solche infos meine ich auch: wie kann ich was anders machen,
damit es schneller/besser/optimaler wird?

*verzieht das Gesicht* „optimaler“ gibt’s nicht. „Optimal“ ist schon das beste, und weiter nach oben geht’s dann halt per Definition nicht.

Was man schneller machen kann und wie, hängt ganz von der Programmiersprache ab. Wenn du dich für komplexere Algorithmen interessierst, dann solltest du die mal die Komplexität deiner Algorithmen ansehen. Du weißt schon, dieses O(n^2)-Zeugs.

funktionen (wie z.b. betrag(x) o.ä.). und da bastle ich halt

Bietet sie Maxmimum oder Minimum zweiter Zahlen an? Dann berechnet sich der
Betrag wie folgt: Betrag(a) = a - 2 * min(a, 0)

ich hoffe, das war jetzt etwas besser eingegrenzt…

Naja, eher nicht. Was genau bietet Conaktiv für Funktionalitäten (für Programmierer), und was hättest du gerne? Wenn ich für jemanden kochen soll, wüßte ich ganz gerne die Zutaten, dann kann ich dir sagen, ob ich ein gewünschtes Gericht basteln kann. „Hier sind zwei Stangen Sellerie, mach’ mir ein Steak“ ist nämlich schwierig. :wink:

Chris