Evizienter programmieren



  • Hier , dass meine ich:

    Hier war ein sehr langer Quelltext...
    

    Und dass wiederholt sich noch5 oder 6 mal...



  • lager das in eine funktion aus, also den code fuer den rahmen. dann musst du nur jedes mal die funktion ausfuehren statt den ganzen code doppelt und dreifach zu haben.



  • Und wie mache ich das?... 😕



  • mein gott, sowas steht in jedem tutorial und ein lehrer sollte sowas genauso drannehmen...

    void rahmen(void)
    {
        /* hier kommt der code fuer den rahmen rein */
    }
    
    /* irgendwann kommt die main(), wo das drin steht, natuerlich ohne die ... */
    ...
    rahmen();
    ...
    


  • Danke, damit fang ich nehmlich am Montag erst an...
    (Ich mache C ausserschuulisch noch in einer AG mit, nur so nebenbei, denn bei mir in der Schule macht man nur Delphie...)



  • DSD Steve du solltest vielleicht nen Tuturial komplett lesen, bevor du weiter Programmierst. Sicher wirste dann nicht alles gleich verstehen, doch kannst dann ja immer mal nachlesen...



  • So, ich habe versucht eine Funktion aus meinen Rahmen zu machen, aber es funzt natürlich nicht....(Ich habe auch nichts anderes erwartet... 😞 )

    int main()
    {
    	int w = 1,Rahmen;
    	char x, y;
    	char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185; //Rand-Zeichen
    	float a, b, Ergebniss,ZErgebniss,ZErgebniss2;
    	double c, d;
    
    //Rahmen-Funktion-Erstellung
    
    void Rahmen()
            clrscr();
    	gotoxy(25,1);
    	cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r1,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r3);
    	gotoxy(25,2);
    	  for (Rahmen = 2; Rahmen <= 4; Rahmen++)
    	  {
               gotoxy(25, Rahmen);
               cprintf("%c", r4);
    	  }
    	gotoxy(25,5);
    	cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r9,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r10);
    	  for (Rahmen = 6; Rahmen <= 24; Rahmen++)
    	  {
               gotoxy(25, Rahmen);
               cprintf("%c", r4);
    	  }  
    	gotoxy(25,25);
    	cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cSteveKempe%c%c%c",r5,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r7,r8,r2,r6);
    	  gotoxy(25,2);
    	  for (Rahmen = 2; Rahmen <= 4; Rahmen++)
    	    {
                gotoxy(54, Rahmen);
                cprintf("%c", r4);
    	    }
    	  for (Rahmen = 6; Rahmen <= 24; Rahmen++)
    	   {
               gotoxy(54, Rahmen);
               cprintf("%c", r4);
    	   }  
    
    //Rahmen-Funktion-Erstellung-Ende
    
    	while(w != 0)
    	{
    
    	Rahmen();	
    
    	clrscr();
    	textbackground(CYAN);
    	textcolor(RED);
    

    Was ist hier nun mein Fehler? So wie ich das mitbekommen habe, hat der Compiler mit den ganzen conio.h Befehler seine Probleme. Liege ich richtig?



  • void rahmen();   //Deklaration
    
    int main()
    {
     //code
     rahmen();  //Aufruf
    }
    
    void rahmen()   //funktion
    {
     //code
    }
    


  • Lyrix schrieb:

    void rahmen();   //Deklaration
    
    int main()
    {
     //code
     rahmen();  //Aufruf
    }
    
    void rahmen()   //funktion
    {
     //code
    }
    

    Ich versteh es irgendwie nicht 😕
    Muss man nicht Variablen ganz am Anfang deklarieren? Und wie ist das genau gemeint(das andere)? Bitte mit etas mehr Kommentar posten. Danke schon mal im Vorraus!



  • Das steht alles, aber auch wirklich ALLES in nem Tutorial....

    also nochmal.

    Zunächst musst du deine Funktionen Deklarieren, das macht man so:

    void funtionsname();
    

    Dann kommt deine Main-Funktion:

    void main()
    {
    //Variablen
    //Quellcode
    
    }
    

    Die Variablen, die du in der Main Funktion deklarierst, sind auch nur in der Main Funktion verwendbar.

    Zum Schluss kommt noch deine Funktion:

    void Funktionsname()
    {
     //Variablen
     //Code
    }
    

    Auch hier handelt es sich um lokale Variablen, die wiederrum nur in der Funktion "Funktionname" verwendet werden koennen....

    Aber les es doch bitte in nem Tut oder Buch nach



  • In der FAQ steht aber, das es verboten ist eine void main zu machen. darf man das jetzt doch? 😕 (Gib mal nen Link zu einen guten Tutorial)





  • c.rackwitz schrieb:

    http://www.pronix.de/pronix-4.html

    funzt nicht...



  • unfug, hat doch grad noch....
    und jetzt immernoch!

    und nein, eine void main() ist nicht gern gesehen und vom standard her verboten.



  • dann mach halt

    int main()
    {
     return 0;
    }
    

    Aber das hat ja nun nicht so ganz was mit dem thema zu tun 😉



  • Kann mal schnell wer meinen Quellcode so editieren das es funzt?



  • verschieb deine rahmenfunktion einfach vor die main() und nicht in die main.



  • void Rahmen(); 
    
    int main()
    {
        int w = 1;
        char x, y;
     //Rand-Zeichen
        float a, b, Ergebniss,ZErgebniss,ZErgebniss2;
        double c, d;
    
        while(w != 0)
        {
    
        Rahmen();   
    
        clrscr();
        textbackground(CYAN);
        textcolor(RED);
        }
    }
    
    void Rahmen()
    {
        int Rahmen;
        char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174,r9=204,r10=185;
            clrscr();
        gotoxy(25,1);
        cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r1,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r3);
        gotoxy(25,2);
          for (Rahmen = 2; Rahmen <= 4; Rahmen++)
          {
               gotoxy(25, Rahmen);
               cprintf("%c", r4);
          }
        gotoxy(25,5);
        cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",r9,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r10);
          for (Rahmen = 6; Rahmen <= 24; Rahmen++)
          {
               gotoxy(25, Rahmen);
               cprintf("%c", r4);
          }  
        gotoxy(25,25);
        cprintf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%cSteveKempe%c%c%c",r5,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r2,r7,r8,r2,r6);
          gotoxy(25,2);
          for (Rahmen = 2; Rahmen <= 4; Rahmen++)
            {
                gotoxy(54, Rahmen);
                cprintf("%c", r4);
            }
          for (Rahmen = 6; Rahmen <= 24; Rahmen++)
           {
               gotoxy(54, Rahmen);
               cprintf("%c", r4);
           }
    }
    

    Denke so müsste es nun gehn...



  • Mal kurz Off-Topic:
    Muss man sich bei der Tutorial-Seite registrieren um dort Infos zu bekommen?

    Der Quellcode funzt nicht: Es kommt Call zo Nonfunction!



  • Hast du die Funktionsdeklaration oben auch kopiert?

    Wenn ja kannste mal den genauen Fehler nieder schreiben...


Anmelden zum Antworten