Jmp befehl in c



  • Hallo alle zusammen!

    Vorweg, ich bin ein blutiger anfänger was das programmieren angeht!
    ich hatte folgendes vor:

    int main()
    {
    int Passwort;
    printf ("Bitte geben Sie das Passwort ein: ");
    scanf ("%d",&Passwort);
    if (Passwort == 1234)
    printf ("Wilkommen");
    else ("Falsches Passwort");
    getch();
    }

    wenn ich nun nichts falsch gemacht habe sollte der mich ja nach nem passwort fragen, gebe ich 1234 ein " das richtige passwort " begrüßt er mich. gebe ich das falsche ein sagt er mir, dass es falsch war und beendet dann das programm.
    wenn das passwort aber falsch war möchte ich das er erneut nach dem passwort fragt!

    meine frage: giebt es einem jump befehl, wie im assenbler zb jmp 0E000 ?

    Vielen Dank!



  • fuer sowas gibts schleifen wie while und for
    sowas wird sicher in deinem tutorial/buch stehen oder dein lehrer wirds dir beibringen.



  • es gibt goto in c und labels

    label:
    
    goto label;
    

    damit erzeugt man aber meistens Programmcode, der nicht struktoriert ist - und wir sind schon im Zeitalter von OOP 😉

    unterschied zwischen strukturiert und unstrukturiert:
    http://turing.fh-landshut.de/~jamann/usop.html



  • Vielen Dank für die Antworten 😃 !



  • AAARGH!!!

    also wenn, dann schon sowas in der Art

    int work ()
    {
            printf ("Wilkommen"); 
       /* tu irgendwas */
    }
    int main (int argc, char **argv)
    {
        int Passwort; 
        printf ("Bitte geben Sie das Passwort ein: "); 
        scanf ("%d",&Passwort); 
        if (Passwort == 1234) 
        {
            work();
        }
        else
        {
            printf ("Falsches Passwort"); 
        }
        getch(); 
    }
    

    Übrigens ist "Passwort" falsch. Ein Wort ist eine Ansammlung von Buchstaben. Das da müsste code heißen.

    Allerdings, wer hindet dich eigentlich an sowas?

    #include <stdio.h>
    #include <string.h>
    
    int main ()
    {
    	char passwort[32];
    	printf ("Passwort?");
    	scanf ("%s", passwort);
    
    	if (0 == strcmp (passwort, "holznuss"))
    	{
    		printf ("RISCHTISCH!\n");
    	}
    	else
    	{
    		printf ("falsch!\n");
    	}
        return 0;
    }
    

    würd mal raten, du hast vorher BASIC gemacht? 😉



  • Hallo,

    Ne ich habe vorher in der richtung noch nichts gemacht :)!
    Ich mache derzeit ne ausbildung zum elektroniker für geräte und systeme,
    da haben wir gerade das thema "MFA" fals das jemandem was sagt... .
    und irgendwie hat mir das spass gemacht und da dachte ich mir, fängste ma mit c an:)!



  • ooh hauerhauerhauerha!
    Nen 8085 Prozessor.. Ist ja echt ne Strafe.

    Hatt schon überlegt, wo du das mit dem JMP her hast 😉
    Systemelektroniker können dafür besser löten als ich armer Fachinformatiker 😉
    C ist schon ne schöne Sprache, aber ohne nen vernünftiges Buch wirste imho nicht weit kommen. :-p



  • Wenn es goto kommt, darf natuerlich ein Name nicht ungenannt bleiben: Der unlaengst verstorbene Edsger W. Dijkstra, der schon 1968 einen Artikel veroeffentlichte "Go To Statement Considered Harmful" (Communication of the ACM, Vol. 11 (2), 1068, pp. 147-148). Dieser kl. Artikel schlug damals ein wie eine Bombe und gilt heute ein Meilstone des Software-Designs.



  • Steinigt Vertexwahn!!!!!!!!!!!

    Schön, dass du nach dem Motto "ich weiß es" was rausplappern musst. Sowas verschweigt man nem Anfänger lieber.



  • Schön, dass du nach dem Motto "ich weiß es" was rausplappern musst.

    ich hab erklärt was unstruktoriert heißt, was struktoriert heißt und das man heute objektorientiert programmiert und man dazu nicht mal die programmiersprache wechseln muss (nochmal: http://turing.fh-landshut.de/~jamann/usop.html) - was willst du überhaupt 😉

    ich habe noch nie in einem Programm ein goto gebraucht
    heute finde ich es schon seltsam, wenn ich eine Funktion außerhalb einer Klasse entdecke 😉



  • Vertexwahn schrieb:

    ich habe noch nie in einem Programm ein goto gebraucht

    In jeder ein wenig besseren Softwarebude, waere das auch ein Kuendigunggrund. Der von mir oben erwaehnte Artikel Dijkstras: Ich habe ihn gerade nochmal nachgelesen. Wie in dem Artikel ausgefuehrt wird, hat schon Guiseppe Jacopini im Jahr 1966 nachgewiesen, dass das goto-Statement fuer die Beschreibung der Logik eines Programmes ueberfluessig ist. Ein Nachdruck des Artikels findet u.a. in Manfred Broy, Ernst Denert, Software Pioneers, Springer, 2001, p. 352 ff.



  • Vertexwahn schrieb:

    Schön, dass du nach dem Motto "ich weiß es" was rausplappern musst.

    ich hab erklärt was unstruktoriert heißt, was struktoriert heißt und das man heute objektorientiert programmiert und man dazu nicht mal die programmiersprache wechseln muss (nochmal: http://turing.fh-landshut.de/~jamann/usop.html) - was willst du überhaupt 😉

    ich habe noch nie in einem Programm ein goto gebraucht
    heute finde ich es schon seltsam, wenn ich eine Funktion außerhalb einer Klasse entdecke 😉

    Aber Asker hat bestimmt nur das hier gelesen von dir:

    es gibt goto in c und labels 
    
    C/C++ Code: 
    label: 
    
    goto label;  
    C/C++ Code: 
    label: 
    
    goto label;  
    C/C++ Code: 
    label: 
    
    goto label;
    


  • lest lieber mal "1984" von george orwell. in dem buch wird die verstuemmelung der sprache dazu verwendet, dem menschen manche gedanken unmoeglich zu machen.



  • Nochmal eine Bemerkung; ich weiss nicht, ob diese Diagramme heute noch gelehrt werden, aber ich war noch gezwungen Programme als Nasi-Schneidermann-diagramme zu entwerfen. Diese koennen kein Goto darstellen und zwingen zu einer gewissen Strukturierung. Ich fand eine kurze Einfuehrung:

    http://users.evitech.fi/~jaanah/IntroC/DBeech/3gl_nassi.htm#start



  • die koennen aber auch keine selbstgeschriebenen funktionen im selben block anzeigen...



  • Doch ein Doppelstrich an der Seite zeigt einen Funktionsaufruf an.



  • bitte versteh mich nicht falsch, ich meine definitionen, nicht calls...



  • c.rackwitz schrieb:

    bitte versteh mich nicht falsch, ich meine definitionen, nicht calls...

    Nee, das geht nicht. Ich habe da immer mit Fussnoten gearbeitet und auf eine andere Stelle der Dokumentation hingwiesen, wo diese Funktion halt beschrieben ist (ggf. per Nasi-Schneidermann-Diagramm).


Anmelden zum Antworten