Evizienter programmieren



  • Ich bin gerade etwas verwirrt, wieso eine for-Schleife, dies ist doch eine Aufzählschleife und ich weis doch wie oft die Schleife durchlaufen soll, muss ich dann nicht eine do-Schleife nehmen?(Ich hab bissher nur mit einer While-Schleife gearbeitet)Und wie sieht es aus mit den nur einmal schreiben?



  • siehst du deine tausend zeilen, in denen sich immer wieder das selbe wiederholt? gotoxy, cprintf, immer wieder. dafuer sind for loops.
    kapierst du das wirklich nicht? 🙄



  • kannste mal Quellcode angeben...(Ich glaube aber zu verstehen...)



  • int i;
    
    for (i = 2; i <= 25; ++i)
    {
        gotoxy(25, i);
        cprintf("%c", r4);
    }
    

    ersetzt die erste haelfte der kurzen cprintfs



  • Danke! Das werde ich gleich versuchen einzubauen! Achso, und wie sieht es nun aus mit den nur einmal schreiben... 🙄



  • ja wie was einmal schreiben?
    der for loop IST "einmal schreiben".



  • 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.


Anmelden zum Antworten