WinFuture-Forum.de: For Schleife Besprechen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

For Schleife Besprechen


#1 Mitglied ist offline   centro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 49
  • Beigetreten: 21. Februar 08
  • Reputation: 0

geschrieben 06. März 2008 - 00:53

Das ist das Programm:# include fehlt !

int main()
{
int i;
int j;

for(i=1;i<=5;i++)
{

printf("Ausgabe voni: %i""\n",i);

for( j=1; j<=2; j++)

{
printf("Ausgabe vonj:%i""\n",j);

}
}
printf
return 0;
}

Die Ausgabe wollte ich mal mit euch besprechen .Ich verstehe was die for Schleifen machen auch die Ausgebe verstehe ich .Auch das die for Schleifen geschachtelt sind .Der Punkt den ich mit eurer Hilfe
klären möchte ist .Wie erkenne ich denn das die zweite for Schleife ganz durchläuft.
Jetzt bitte nicht mit der Bedingung und Aktualisierung erklären das verstehe ich .
Es ist nicht einfach zu erklären was ich meine .
ok.die Ausgebe ist ja so i1 j1 j2 i2 j1 j2 u.s.w.
Das heist ja das die erste Schleife einmal ihre Anweisung ausgibt und die zweite ganz durchläuft und das
geht so bis die erste Schleife bei der Endbedingung angekommen ist .
Ich glaube jetzt habe ich es .Die erste Schleife kann nur Ausgeben wenn die zweite aufhört, somit muss sie
einmal durchlaufen ok. wenn die Ausgabe so aussehen müsste das sich die Werte abwechseln .z.B.
i1 j1 i2 j2 u.s.w dann sollten i und j gleiche Endbedingungen haben oder und ich würde in einer printf
Anweisung i und j übergeben printf("%i %j",i,j); die würde ich dann auch in die zweite for Scheife einbringen.
Habe es nicht ausprobiert werde es aber tun .Wenn sich jetzt einige Fragen warum ich das alles schreibe,
es ist die einige Möglichkeit, die Sachen noch zu vertiefen. Also nicht böse sein.

Hat doch nicht so geklappt es kamm in i1 j1 i1 j2 i1 j3 i1 j4 i1 j5 raus und dann noch i2 j1 i2 j2 i2 j3
u.s.w muß ich i und j in einen Array speichern und es dann Ausgeben ? Ich werde es mal versuchen.

Ich habe es geschaft , aber glaubt mir verstanden habe ich es nicht was ich Programmiert habe .
int main()
{
int i;
int j;
int array [5];

for(i=1;i<=5;i++)

array[i];


for( j=1; j<=5; j++)


printf("Ausgabe vonj:%i %i""\n",array[i],j);



return 0;
}

Dieser Beitrag wurde von Witi bearbeitet: 06. März 2008 - 07:22

0

Anzeige



#2 Mitglied ist offline   centro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 49
  • Beigetreten: 21. Februar 08
  • Reputation: 0

  geschrieben 06. März 2008 - 11:15

Ich glaube ich habe es verstanden. Das array ist eine Tabelle und da ich keine Klammer habe füllt sich die Tabelle mit den Werten, dann folgt die andere Schleife.
Und mit dem printf () Anweisung gebe ich die Werte aus .Was aber komisch ist , wenn ich dann doch noch klammer einbringe .Verschachtelte for schleife , klappt es nicht und ich komme dann auch noch seltsame
Werte wieder.
0

#3 Mitglied ist offline   Yadis 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 06. März 08
  • Reputation: 0

geschrieben 06. März 2008 - 11:32

Die Frage ist ja, was willst du eigentlich programmieren?
Also was soll die Ausgabe ausgeben? Wenn du das schreibst kann man dir sicher auch helfen.
MfG
0

#4 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 429
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 06. März 2008 - 17:15

Hallo centro,

es ist schwer, dazu etwas zu sagen:

  • Ich weiß nicht, ob Du Dich noch mit den hier genannten Programmen überhaupt noch beschäftigst.
  • Du machst bei Deinen Fragen nicht immer klar, auf welche Deiner Programmversionen Du Dich beziehst.
  • Du sagst nicht eindeutig, welche Ausgabe Du erwartest (statt unklaren verbalen Beschreibungen wäre eine Aussage sinnvoll wie z.B.: "Ich erwarte bei Codebeispiel A folgende Ausgabe: i=1 j=1, i=2 j=2, aber stattdessen kommt..." Naja, Du verstehst, was ich meine.
  • Du kopierst, wir mir scheint, nicht immer exakt den Code, den Du benutzt hast. Mancher Quellcode, der nach Deiner Aussage ein falsches Ergebnis gebracht hat, lässt sich bei mir nicht mal kompilieren, anderer wirkt sehr seltsam. In Deinem ersten Programm in diesem Thread z.B. erscheint eine einzelne printf-Anweisung ohne Inhalt und ohne abschließendes Semikolon, im zweiten gibt es ein nicht initialisiertes Array, dessen (zufällige!) Werte ausgegeben werden sollen.
  • Außerdem ist Dein Code manchmal unsauber formatiert, d.h. zu viele und inkonsistente Leerzeilen, komisches Zeugs in printf()-Anweisungen, Anweisungen ohne Wirkung (erstes Codebeispiel im Thread enthält glaube ich array[i] ohne Zuweisung o.ä.) Ich hoffe, das klingt jetzt nicht allzu penibel, aber dadurch leidet die Übersicht erheblich, und ich glaube, dass einige Verständnisprobleme Deinerseits tatsächlich auf unaufgeräumten Code zurückzuführen sind. Ich für meinen Teil reformatiere Deinen Code erstmal per Hand, wenn ich nach Fehlern darin suche oder das Verhalten des Programms ergründen will. So, wie Du den Code hier manchmal reinpostest, hätte ich auch Probleme, ihn zu verstehen, obwohl ich sicher einige Übung darin habe! Ich hoffe, das kommt jetzt nicht zu schulmeisterhaft rüber, und ich hoffe, dass es Dir hilft, statt Dich zu verärgern.


Viele Grüße
Def

Dieser Beitrag wurde von def bearbeitet: 06. März 2008 - 17:53

Eingefügtes Bild
0

#5 Mitglied ist offline   sibbl 

  • Gruppe: aktive Mitglieder
  • Beiträge: 377
  • Beigetreten: 30. Dezember 06
  • Reputation: 3
  • Wohnort:localhost

geschrieben 06. März 2008 - 17:36

hab des duch zufall grad mal durchgelesen ... wieso schreibs du %i bzw %j und machst bei printf "" da rein?

du müsstest z.B. wenn array[i] ein string ist %s verwenden, bei double %d und float %f... also wenn array[i] ein string ist:

printf("Ausgabe von j: %s %d\n",array[i],j);
0

#6 Mitglied ist offline   centro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 49
  • Beigetreten: 21. Februar 08
  • Reputation: 0

  geschrieben 06. März 2008 - 18:57

Ok werde versuchen bei dem was ich wissen will es klarer auszudrücken. Ansonsten sehe ich Kritik so lange sie konstruktive ist als ein Bestanteil der Prozessoptimierung . Dafür ist ja auch ein gutes Forum da , unterschiedliche Meinungen auszutauschen und bestenfalls sich in der Goldenenmitte zu treffen.
Wie sagen die Franzosen, zwischen Himmel und Erde liegt das Meer .
Beidem was ich meine und schreibe vielleicht auch , wie gesagt werde mich bessern, so gut es geht.

Dieser Beitrag wurde von centro bearbeitet: 07. März 2008 - 04:19

0

#7 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 429
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 06. März 2008 - 22:30

Naja, ich habe so das Gefühl, dass Du Dir eventuell selbst zu viel abverlangst. Mir scheint, Du gehst manchmal schon zu fortgeschrittenen Konzepten der Programmierung über, ohne die Grundlagen richtig verstanden zu haben.
Als ich selbst C gelernt habe, da hat es mich z.B. gestört, dass in den Beispielprogrammen, die Benutzereingaben entgegengenommen haben, am Anfang stillschweigend immer etwas in folgender Art gemacht wurde:

#define MAX 80

Das heißt, der Eingabepuffer wurde auf 79 Zeichen begrenzt. Man kann natürlich auch andere Werte festlegen, aber entweder verschwendet man auf diese Weise Speicher, oder es passen nicht die ganzen Eingaben des Benutzers in den Puffer. Aber ich wollte doch richtige Programme schreiben und nicht so ein halbgares Zeugs. Das hat mich damals beschäftigt und auch ein bisschen geärgert. Oder dass die numerischen Datentypen für die Berechnungen, die mich interessiert haben, einfach nicht ausreichten, so dass die Ergebnisse gerundet wurden. Und in keinem Lehrbuch, das ich hatte, eine Lösung auch nur angedeutet worden war (oder das Problem überhaupt als solches identifiziert worden wäre).
Natürlich gibt es für all das Lösungen. Richtig verstanden habe ich die Programmierung erst, als ich akzeptiert habe, dass ich anfangs ein paar Einschränkungen hinnehmen muss, und dass ich erst mal die Grundlagen lernen muss, um die fortgeschrittenen Dinge zu verstehen. Um beliebig lange Eingaben zu verarbeiten, ohne Speicher zu verschwenden, muss man dynamische Speicherbelegung beherrschen, und um das zu verstehen, muss man sich mit Pointern (Zeigern) auskennen. Und um mit Pointern sicher umgehen zu können, muss man Datentypen richtig verstehen. Und um das zu verstehen, muss man unter anderem die Ausgabe mit printf nebst Format-Modifizierer richtig beherrschen. Man muss nicht alles auswendig kennen, aber man sollte es auf jeden Fall mittels Nachschlagen sauber hinkriegen.
Erst als ich nicht mehr auf das geschielt habe, was in den späteren Kapiteln drankommt, sondern mich auf das konzentriert habe, was aktuell vor mir lag - auch wenn mich die Einschränkungen wirklich gestört haben - kam ich richtig weiter. Vielleicht geht es Dir ja auch so; deswegen erzähle ich das alles überhaupt. :imao:
Das ganze Problem liegt zum Teil auch in der Sprache C selbst begründet. Sieh Dir mal andere Programmiersprachen an, gerade auch mal so etwas wie Python oder Ruby, oder auch Java, C++, C# und wie sie alle heißen. Und vergleich dann mal, wie hoch der "Einstiegspreis" an Wissen und Aufwand in C ist, um "einfache" Dinge zu machen (Sound- und Grafikausgabe, Dateioperationen, etc.). Dann wird Dir vermutlich schnell klar werden, warum C nicht gerade als Programmiersprache für Anfänger gepriesen wird.
Um ehrlich zu sein, bin ich nicht mal sicher, ob ich selbst nochmal C lernen würde, wenn ich heute anfangen würde. In C ist vieles einfach nur umständlich. Dass C dafür wenigstens "effizienter" als C++ oder andere Programmiersprachen ist, gilt für die meisten Programmierer und Programme wohl nur theoretisch. Und wenn man einfach nur hardwarenah programmieren will, weil man meint, es könne ja nicht schaden zu wissen, was unter der Haube so passiert, dann ist das sicher keine grundsätzlich schlechte Idee, nur sollte man dann eben gleich Assembler nehmen. Dürfte auch nicht schwerer als C sein, wenn man nicht gerade hochoptimierten Code schreiben will, und dann lernt man sozusagen hautnah, was in der Maschine passiert.
Sicherlich gibt es auch weiterhin Gründe, C zu lernen; unter anderem können zumindest lesende C-Kenntnisse manchmal nützlich sein, weil es schon so viel in C geschriebenen Code gibt, aber ob man sich das gleich als erste Programmiersprache antun muss...
Okay, ich hab jetzt viel geschrieben, vielleicht zu viel, aber ich wollte das einfach mal loswerden. Vielleicht werden meine Äußerungen hier von niemandem weiter beachtet, aber es kann unter Umständen auch passieren, dass ich damit eine Diskussion lostrete, welche Programmiersprache die "beste" sei bzw. welche sich am besten als erste Programmiersprache eigne, aber das wäre auch okay. Gibt ja noch nicht genug von solchen Diskussionen im Web. ^_^

Viele Grüße
Def
Eingefügtes Bild
0

#8 Mitglied ist offline   centro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 49
  • Beigetreten: 21. Februar 08
  • Reputation: 0

geschrieben 07. März 2008 - 04:48

Ich glaube eine Sache die bei mir nicht so rund läuft ist meine Methode zu lernen, sprich da gibt es noch viel Verbesserungspotential, muss da noch verschiedene Methoden ausloten .
Ich merke aber das die Neugier da ist und die will nun mal auch gestillt werden. Was leider dazu führen kann, dass man von einer Sache zur anderen springt.
Werde strategischer vorgehen bei der Auswahl der Übungen .
Es gibt eine Pflanze die man Rose von Jericho nennt , so sehe ich auch meine kognitiven Leistungen an.
Sprich die letzten Jahre gab es kein Wasser oder besser gesagt keinen Input, so langsam blüht der Verstand wieder auf. Somit denke ich, dass sich mit der Zeit alles verbessern wird.
:blush:
0

#9 Mitglied ist offline   def 

  • Gruppe: aktive Mitglieder
  • Beiträge: 429
  • Beigetreten: 19. Dezember 06
  • Reputation: 7
  • Geschlecht:Männlich

geschrieben 07. März 2008 - 20:45

Na dann noch viel Erfolg beim Lernen!
Wenn Du noch Fragen hast, melde Dich einfach wieder.

Bis denn
Def
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0