PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was ist ein Loop ??


gsx-r
2004-04-07, 19:32:03
Kann mir jemand erklären was ein Loop ist und welche Funktion dass es hat??

Endorphine
2004-04-07, 19:37:42
Loop = Schleife, die immer wieder durchlaufen wird, bis eine bestimmte Bedingung eintritt oder nicht mehr eintritt.

gsx-r
2004-04-07, 19:41:08
Ist ein Loop abhängig von der Grafîkkartenleistung ?
Wird es auch in Benchmarkprogramme berüksichtigt?

Kennung Eins
2004-04-07, 21:41:09
Beispiel:i:=0;
LOOP: i:=i+1;
if i<10 then goto LOOP;Das ist ein einfacher Loop (eine Schleife). Hat nichts mit Grafikkarten zu tun, sondern ist .. hmm ich will mal sagen .. ein Element der theoretischen Informatik.

HellHorse
2004-04-07, 22:44:50
Ist bei einem TI-loop nicht zuvor bestimmt, wie oft er durchlaufen wird? Also bei

loop(4):
irendetwas()

wird irgendetwas genau 4 mal ausgewführt. Das andere Ding, was ausgeführt wird bis/solange eine Bedinung erfüllt ist heisst while oder so.

ShadowXX
2004-04-07, 22:55:24
Original geschrieben von HellHorse
Ist bei einem TI-loop nicht zuvor bestimmt, wie oft er durchlaufen wird? Also bei

loop(4):
irendetwas()

wird irgendetwas genau 4 mal ausgewführt. Das andere Ding, was ausgeführt wird bis/solange eine Bedinung erfüllt ist heisst while oder so.

Loop heisst einfach nur "Schleife"...und es gibt eben verschieden Schleifen-"Arten".

Eine davon ist eine While-Schleife. (dann gibts noch For...(Next), Do....While, usw.)

Die verschiedenen Schleifen dienen für verschiedene Zwecke...mal ist es besser eine For-Schleife zu benutzen, in einem anderen Fall ist eine While-Schleife besser und ganz woanders nimmt man vielleicht lieber Do...While.

For-Schleifen sind zum Beispiel am besten zum durchlaufen von "starren" Konstukten (also etwas, wo man beim start der Schleife schon weiss, wieoft man Sie durchlaufen will)

While-Schleifen und Do...While-Schleifen benutzt man dagegen meist, wenn der Abbruch "unbestimmt" ist...also eine variable Grösse mit im Spiel ist.

Der Unterschied zwischen den beiden ist nur, das man bei der While-Schleife die Abbruchbedingung im Kopf und in der Do die Abbruchbedingung im Fuss hat (diese wird dadurch mindestens ein mal durchlaufen)

Abbruchbedingen gibt es eigentlich in jeder Schleifenart...und klar, du kannst eine Schleife so Konstruieren, dass du genau weisst wieoft sie durchlaufen wird...

Bei deinem Beispiel oben, wäre die Abbruchbedingung, das es 4 mal durchlaufen wird....(würde meist durch eine For-Schleife realisiert...zumindest in C/C++)

Haarmann
2004-04-07, 23:19:40
Ich schliesse mich HellHorse an. Bei uns in der TI lernte man das so.

ShadowXX
2004-04-08, 00:41:51
Original geschrieben von Haarmann
Ich schliesse mich HellHorse an. Bei uns in der TI lernte man das so.

Das widerspricht sich doch nicht...es ist eine schleife mit einer gegebenen Abbruchbedingung...im Beispiel von Hellhorse ist diese "4x durchlaufen".

Das ist das gleiche als wenn man:

for(int a=0;a < 4;a++)
"auszuführender Code"

schreibt.

Die Syntax, kann von Sprache zu Sprache verschieden sein und es ist durchaus möglich das es Sprachen gibt, wo man statt meines for-konstukts einfach:

Loop(4)
"auszuführender Code"

schreibt.

Bei beiden versionen ist vorgegeben, wie oft die schleife durchlaufen wird...

while ist trotzdem ebenfalls eine schleife...

int a=0;
while(a < 4)
{
"auszuführender Code"
a++;
}

Macht ebenfalls dasselbe...unn auch hier ist vorgegeben, wie oft die schleife durchlaufen wird...

Und Pseudo-Code technisch kann man sowieso fast alles benutzen...wenn man sich vorher auf eine Syntax einigt...

Coda
2004-04-08, 00:54:20
Original geschrieben von gsx-r
Ist ein Loop abhängig von der Grafîkkartenleistung ?
Wird es auch in Benchmarkprogramme berüksichtigt?
Ja es hat nen Einfluss, weil der betroffene Code dann ja mehrmals ausgeführt wird

Benchmarks kenne ich noch keine, denn ATi Grafikkarten können keine dynamischen Loops (statische glaub auch nur durch unrolling)

Haarmann
2004-04-08, 06:27:55
ShadowXX

While kann sich "aufhängen", weil die Bedingung nicht eintreten muss...

HellHorse
2004-04-08, 07:29:50
Original geschrieben von Haarmann
ShadowXX

While kann sich "aufhängen", weil die Bedingung nicht eintreten muss...
Genau, ist also nur semirekursiv (aka rekursiv aufzählbar aka partiell rekursiv).
loop dagegen terminiert immer, da immer im Voraus schon bekannt ist, wie oft es ausgeführt wird. Ist also primitiv rekursiv.
(hoffe, ich habe gerade keinen Scheiss erzählt)

@ShadowXX
Wir (Harmann und ich) reden vom TI-loop.

ShadowXX
2004-04-08, 11:08:36
Original geschrieben von HellHorse
Genau, ist also nur semirekursiv (aka rekursiv aufzählbar aka partiell rekursiv).
loop dagegen terminiert immer, da immer im Voraus schon bekannt ist, wie oft es ausgeführt wird. Ist also primitiv rekursiv.
(hoffe, ich habe gerade keinen Scheiss erzählt)

@ShadowXX
Wir (Harmann und ich) reden vom TI-loop.

Rekursiv ist eigentlich sich selbst aufrufend...ok so könnte man vielleicht auch loops definieren.....(wobei ich für diese Aussage wahrscheinlich einen Rüfel von meinem Entwicklungsleiter bekommen würde)

Da kommt mir ein trichter...meint ihr mit TI -> theoretische Informatik??? Mein lieblings Hassfach, als ich noch Studiert habe???

Naja...zwischen Theorie und Praxis klaffen meist mehere Lücken...was auch mein damaliger Prof nicht so ganz einsehen wollte.

Klar kann sich ein while aufhängen...bei meinem beispiel aber wohl kaum, weil die bedingung nicht eintritt...

Nur eine solche "loop" Konstruktion, wie Ihr sie nennt, kenne ich in keiner mir bekannte Programmiersprache...(x86-Assembler vielleicht??)

Loops in (zumindest in den "höheren") Programmiersprachen, sind immer Bedingunsabhängig (kann wie schon erwähnt auch die eine oder andere Ausnahme geben)

Davon abgeshen, gibt es bei eurem loop(4) beispiel auch einen Haken....
Woher weiss der Rechner den wieoft er die Schleife schon durchlaufen hat??? Er muss also irgendwie mitzählen...bei eurem Beispiel macht er das also irgendwie intern, d.h. es ist auch dort eine Abbruchbedingung gegeben, man Programmiert Sie nur nicht aus....(intern wird da schon eine variable angelegt, die hochgezählt und dann verglichen wird...)

Da meinte ich übrigns mit Theorie und Praxis....

Lokadamus
2004-04-08, 11:43:19
mmm...

Loop = Schleife, hat nix mit der Grafikkarte zu tun und ist einer der grundlegenden Sachen in der Programmierung, mehr wollte gsx-r wohl nicht wissen.

Loop gibt es auch als ASM- Befehl, ist aber nix anderes als jede andere Schleife, benutzt man eine falsche Bedingung, die falsche Loop, erreicht man auch nix (loopne anstelle von loope usw. viel Spass mit den Flags) ... soviel zum Kommentar von Haarman und Hellhorse bezugnehmen auf die "while"- Schleife ...

GloomY
2004-04-08, 12:20:58
Original geschrieben von HellHorse
Genau, ist also nur semirekursiv (aka rekursiv aufzählbar aka partiell rekursiv).
loop dagegen terminiert immer, da immer im Voraus schon bekannt ist, wie oft es ausgeführt wird. Ist also primitiv rekursiv.
(hoffe, ich habe gerade keinen Scheiss erzählt)Nö, stimmt schon. Loop-Berechenbarkeit ist schwächer als While-Berechenbarkeit (bzw. Goto- bzw. Turing-Berechenbarkeit). Die Ackermannfunktion ist z.B. nicht Loop- aber Turing-berechenbar (und damit auch While-berechenbar).

Die Klasse der Loop-berechenbaren Funktionen stimmt mit der der primitiv rekursiven überein. Die Klasse der While-berechenbaren Funktionen ist genau die der Turing-berechenbaren Funktionen. Und das sind ja genau die, die semientscheidbar sind (CH-O), und somit rekursiv aufzählbar. :)

btw: Ich schreib' nächste Woche eine Klausur u.a. genau dadrüber ;)

HellHorse
2004-04-08, 13:15:03
Original geschrieben von ShadowXX
Da kommt mir ein trichter...meint ihr mit TI -> theoretische Informatik??? Mein lieblings Hassfach, als ich noch Studiert habe???

Exakt. Eine "Grenzerfahrung" wie es unser Prof nannte. ;)

Und klar, in der Praxis kommt es aufs Gleiche raus, ob das Problem nicht berechenbar ist oder 1 Mio Jahre zur Berechnung braucht. In TI nicht.

@Gloomy
Viel Erfolg! :up:

Kennung Eins
2004-04-08, 13:33:17
Original geschrieben von Coda
Ja es hat nen Einfluss, weil der betroffene Code dann ja mehrmals ausgeführt wird

Benchmarks kenne ich noch keine, denn ATi Grafikkarten können keine dynamischen Loops (statische glaub auch nur durch unrolling) Scheint mir fast so, als hätte "gsx-r" da mal sowas aufgeschnappt und wollte darauf hinaus.

ShadowXX
2004-04-08, 22:00:52
Original geschrieben von HellHorse
Exakt. Eine "Grenzerfahrung" wie es unser Prof nannte. ;)

Und klar, in der Praxis kommt es aufs Gleiche raus, ob das Problem nicht berechenbar ist oder 1 Mio Jahre zur Berechnung braucht. In TI nicht.

@Gloomy
Viel Erfolg! :up:

Dann ist alles klar...und auch warum wir aneinander vorbeigeredet haben....

"Grenzerfahrung" trifft es übrigens ganz gut...ich bin dabei immer fast wahnsinnig geworden (manche meinen nicht nur fast ;D )....und hab mich mehr als einmal mit meinen Prof in die Haare gekriegt..

Gott sei Dank beschäftige ich mich inzwischen nur noch mit der Praxis...

@Gloomy
ebenfalls viel Erfolg.... :up: