Schleife&Verzweigung, Hilfe!!!!



  • Du hast die if-Schleife übersehen, nachtfeuer.



  • Swordfish schrieb:

    Du hast die if-Schleife übersehen, nachtfeuer.

    Auweia, die berüchtigte if-Schleife muss ich wohl übersehen haben.



  • Swordfish schrieb:

    Du hast die if-Schleife übersehen, nachtfeuer.

    if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen? Wenn man schon nicht in der Lage ist das irgendwann zu lernen sollte man vllt. wenigstens mal den Kopf einschalten.


  • Mod

    Grump schrieb:

    Swordfish schrieb:

    Du hast die if-Schleife übersehen, nachtfeuer.

    if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen?

    Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de



  • Hi SeppJ,

    SeppJ schrieb:

    Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de

    Wann begreift Ihr es denn endlich? Es gibt eine If-Schleife!

    1. If-Anweisung aufschreiben
    2. Übersetzungsversuch
    3. Fehlermeeldung des Compilers ---> Zurück auf 1. und nächster Schleifendurchlauf.
    

    Also wenn das keine If-Schleife ist, was dann??? 😃 😃 😃

    Gruß Mümel



  • SeppJ schrieb:

    Grump schrieb:

    Swordfish schrieb:

    Du hast die if-Schleife übersehen, nachtfeuer.

    if ist ein Statement und keine Schleife ... Oder seit wann wiederholt if irgendwelche Anweisungen?

    Die if-Schleife ist ein Running Gag hier im Forum und auch sonst überall wo viele Programmieranfänger herum laufen. Die benutzen den Begriff nämlich sehr oft. Oft genug, dass jemand sogar dies eingerichtet hat: www.if-schleife.de

    Schade, die Seite hätte wenigstens die korrekte Terminologie demonstrieren können: Es ist ein if -Statement bzw. eine if -Anweisung. if -Abfrage hab ich persönlich noch hie gehört.



  • Arcoth schrieb:

    if -Abfrage hab ich persönlich noch hie gehört.

    ..und vermutlich auch noch nie ein Flussdiagramm jesehn..



  • nachtfeuer schrieb:

    Arcoth schrieb:

    if -Abfrage hab ich persönlich noch hie gehört.

    ..und vermutlich auch noch nie ein Flussdiagramm jesehn..

    Nicht auf Deutsch. Wobei ich auch in meinem mittlerweile zweijährigen Studium keine Flussdiagramme erleben durfte; Vielleicht sind die für Leutchen reserviert, die Schwierigkeiten mit Code haben? 😉



  • Arcoth schrieb:

    Vielleicht sind die für Leutchen reserviert, die Schwierigkeiten mit Code haben? 😉

    könnte sein, z.B. für solche Leute, die noch nicht genau wissen, was auf der Hardwareebene abläuft, wenn solche "If-Schleifchen" loslegen..



  • #include<iostream>
    
    using namespace std;
    
    extern "C" __int64 _stdcall assembly(unsigned __int32 n);
    
    int main()
    {
    	unsigned __int32 n = 0;
    	cin >> n;
    	cout << assembly(n) << endl;
    
    	system("pause");
    	return 0;
    }
    
    .code
    MySegment segment read write execute
    backup_rax dq 0
    backup_rbx dq 0
    backup_rcx dq 0
    
    assembly proc
    ; n ist in rcx
    
    mov backup_rax, rax	; mache Backup von rax
    mov backup_rbx, rbx	; mache Backup von rcx
    mov backup_rcx, rcx	; mache Backup von rbx
    
    mov rax, rcx	; kopiere rcx (n) in rax, weil rax zurückgegeben wird
    mov rbx, 3		; kopiere 3 in rbx, weil mul keine immediate-Werte erlaubt
    start_:			; label für die While-Schleife
    cmp rax, 50		; vergleiche rax (n) mit 50
    jae ende		; wenn größer oder gleich, breche schleife ab
    
    mul rbx			; sonst multippliziere n mit 3
    add rax, 2		; addiere 2 zu n
    cmp rax, 50		; vergleiche n mit 50
    jbe start_		; wenn kleiner oder gleich, wiederhole Schleife
    sub rax, 3		; sonst subtrahiere 3 von rax
    jmp start_		; wiederhole Schleife
    
    ende:			; Label nach der Schleife
    
    mov rbx, backup_rbx		; rbx wiederherstellen
    mov rcx, backup_rcx		; rcx wiederherstellen
    ret						; gebe den neuen Wert n wieder zurück
    mov rax, backup_rax		; rax wiederherstellen
    
    assembly endp
    
    MySegment ends
    end
    

    Man könnte Zeile 16 weglassen und imul rax, rax, 3 nehmen. Aber es war ja von unsigned die rede (imul beschreibt eine vorzeichenbehaftete Multiplikation)


Anmelden zum Antworten