Evizienter programmieren



  • Kann mir mal einer sagen wie ich folgendes "besser programmieren" kann?

    int w = 1;
    	char x, y;
    	char r1=201,r2=205,r3=187,r4=186,r5=200,r6=188,r7=175,r8=174; //Rand-Zeichen
    	float a, b, Ergebniss,ZErgebniss,ZErgebniss2;
    	double c, d;
    
    	while(w != 0)
    	{
    
    	clrscr();
    	textbackground(CYAN);
    	textcolor(RED);
    
    	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);
    	cprintf("%c",r4);
    	gotoxy(25,3);
    	cprintf("%c",r4);
    	gotoxy(25,4);
    	cprintf("%c",r4);
    	gotoxy(25,5);
    	cprintf("%c",r4);
    	gotoxy(25,6);
    	cprintf("%c",r4);
    	gotoxy(25,7);
    	cprintf("%c",r4);
    	gotoxy(25,8);
    	cprintf("%c",r4);
    	gotoxy(25,9);
    	cprintf("%c",r4);
    	gotoxy(25,10);
    	cprintf("%c",r4);
    	gotoxy(25,11);
    	cprintf("%c",r4);
    	gotoxy(25,12);
    	cprintf("%c",r4);
    	gotoxy(25,13);
    	cprintf("%c",r4);
    	gotoxy(25,14);
    	cprintf("%c",r4);
    	gotoxy(25,15);
    	cprintf("%c",r4);
    	gotoxy(25,16);
    	cprintf("%c",r4);
    	gotoxy(25,17);
    	cprintf("%c",r4);
    	gotoxy(25,18);
    	cprintf("%c",r4);
    	gotoxy(25,19);
    	cprintf("%c",r4);
    	gotoxy(25,20);
    	cprintf("%c",r4);
    	gotoxy(25,21);
    	cprintf("%c",r4);
    	gotoxy(25,22);
    	cprintf("%c",r4);
    	gotoxy(25,23);
    	cprintf("%c",r4);
    	gotoxy(25,24);
    	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(54,2);
    	cprintf("%c",r4);
    	gotoxy(54,3);
    	cprintf("%c",r4);
    	gotoxy(54,4);
    	cprintf("%c",r4);
    	gotoxy(54,5);
    	cprintf("%c",r4);
    	gotoxy(54,6);
    	cprintf("%c",r4);
    	gotoxy(54,7);
    	cprintf("%c",r4);
    	gotoxy(54,8);
    	cprintf("%c",r4);
    	gotoxy(54,9);
    	cprintf("%c",r4);
    	gotoxy(54,10);
    	cprintf("%c",r4);
    	gotoxy(54,11);
    	cprintf("%c",r4);
    	gotoxy(54,12);
    	cprintf("%c",r4);
    	gotoxy(54,13);
    	cprintf("%c",r4);
    	gotoxy(54,14);
    	cprintf("%c",r4);
    	gotoxy(54,15);
    	cprintf("%c",r4);
    	gotoxy(54,16);
    	cprintf("%c",r4);
    	gotoxy(54,17);
    	cprintf("%c",r4);
    	gotoxy(54,18);
    	cprintf("%c",r4);
    	gotoxy(54,19);
    	cprintf("%c",r4);
    	gotoxy(54,20);
    	cprintf("%c",r4);
    	gotoxy(54,21);
    	cprintf("%c",r4);
    	gotoxy(54,22);
    	cprintf("%c",r4);
    	gotoxy(54,23);
    	cprintf("%c",r4);
    	gotoxy(54,24);
    	cprintf("%c",r4);
    

    Ich habe einen Taschenrechner geschrieben und habe mit diesen ASCII-Zeichen meinen rechner umrahmt, dies muss ich allerdings 8 mal oder so machen, für: +,-,x,/ usw. . Gibt es eine möglichkeit, dass ich dieses nur einmal schreibe und in jedem Fenster übernommen wird?



  • nimm loops und einrueckungen



  • Sollte ich eine do-Schleife verwenden? Und was meinst du mit einrückungen? Und gibt es eine möglichkeit, das ich dies nur einmal schreiben muss?



  • mach verdammt nochmal ordentliche einrueckungen fuer den codeblock deines while loops. sieht ja fast schon wie basic aus!

    wenn du nicht weisst, wieso du einen for loop fuer deine tausend zeilen benutzen sollst, dann kann dir keiner mehr helfen.



  • 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


Anmelden zum Antworten