[C] Schlaufen

mi2g

Lieutenant
Registriert
Apr. 2003
Beiträge
1.021
wir hatten heute in der schule einen test über c programmieren. da kamman viele fragen über schleifen vor. jedoch hatte ich keine ahnung. wir hatten auch blätter jedoch hab ich es nicht ganz auf diesen blätter verstanden. klar der test ist durch. jedoch würde ich doch gerne wissen. wie das richtig funktioniert. kann mir jemand richtig gut die schlaufen in c erklären. also die while, for was gibt es noch für welche?
achja habt ihr sonst noch gute seiten über c bei der c richtig super erklärt wird?
danke schonmal im vorraus.
 
Gugg dich einfach mal im Internet um. Benutz zB auch mal Google.

Da fand ich auf den ersten Bilck das Tutorial hier ganz gut:
http://www.lysator.liu.se/c/bwk-tutor.html
Ist halt auf Englisch.

Das hier sah auch ganz gut aus:
http://einstein.drexel.edu/courses/Comp_Phys/General/C_basics/c_tutorial.html

Ich bin mir aber sicher du findest noch bessere Seiten wenn du Google benutzt und dir ein bischen Mühe machst dir die gefundenen Seiten durchzulesen:
http://www.google.de/search?q=C+Tutorial&ie=UTF-8&hl=de&meta=

Viel Spaß :cheerlead:
 
Zu Schleifen im Allgemeinen (gilt eigentlich für so ziemlich alle modernen Sprachen):

1. Kopfgesteuerte Schleifen
Diese überprüfen vor dem Eintritt in die Schleife eine Bedingung.

1.1 while Schleife
"Solange folgendes gilt, mache..."
Code:
while (i < 10)
{
    // mach irgendwas tolles
    i++ // i erhöhen, damits keine Endlosschleife wird
}

1.2 for Schleife
Wird meist verwendet wenn du im voraus weißt wie viele Durchläufe du haben willst. Man kann sie aber auch als while-ersatz missbrauchen oder mit while genauso for schleifen formulieren. Das ist aber wieder was anderes ;)
Code:
// for ( <aktion vor der Schleife>; <weiterlaufbedingung ähnlich while>; <nach jedem Durchgang ausführen>)

for( int i = 0; i < 10; i++)
{
    // mach auch hier was tolles...
}

2. Fußgesteuerte Schleifen
Diese werden mindesten einmal durchlaufen.

2.1 do...while Schleife
"Mach... solange das gilt, schau aber erst nach dem ersten Durchlauf ob es gilt"
Code:
int eingabe = 0;

do
{
    printf("Bitte geben Sie ein Zahl ein, 0 um zu beenden");
    scanf("%d", &eingabe);
}
while( eingabe != 0)
Das war vielleicht zu viel auf einmal, weil ich hier mit Adressen und eingentlich potenziell unsicheren Funktionen rumhantiere aber fürs Verständnis von Schleifen sollte es mal reichen.
Das Programm fragt dich mindestens einmal eine Zahl einzugeben. Gibst du 0 ein ist der ganze Spuk sofort vorbei, ansonsten fragt es dich erneut.
Ziemlich sinnlos aber zum verstehen von fußgesteuerten Schleifen ganz ok.

3. Mittengesteuerte Schleifen

Eigentlich eine Wortschöpfung von unserem recht unfähigen Programmieren-Professor. Du baust dir ne mittengesteuerte aus ner fuß- und einer kopfgesteuerten zusammen, sodass die Bedingung in der Mitte steht. Recht schwachsinnig, also vergiss es gleich wieder, da es 1. nie jemand nutzen würde und es 2. nicht so funktioniert wie erhofft.

Wenn du noch weitere Beispiele oder kleinere Programmme brauchst, die dich beim verstehen unterstützen, gib laut.
 
In der STL (Standard Template Library) von C++ gibt es noch die for_each Schleife. Diese ist, glaube ich, von Pascal geklaut. In C# ist sie auch drin. Java weiß ich nicht.
PHP:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

/* function that prints the passed argument */
void print (int elem)
{
    cout << elem << ' ';
}

int main()
{
    vector<int> coll;

    /* insert elements from 1 to 9 */
    for (int i=1; i<=9; ++i)
    {
        coll.push_back(i);
    }

    /* print all elements */
    for_each (coll.begin(), coll.end(),    // range
              print);                      // operation

    /*  for_each (coll.begin(), coll.end(), print);   would be the same */
    cout << endl;
}
 
foreach kenn ich bisher nur aus PHP und Perl, aber nicht aus Pascal.

Im Endeffekt ist es aber nichts anderes als eine For-Schleife mit schon definiertem ende.
 
Dann wars Perl und nicht Pascal. Irgendwas mit "P" wusste ich noch :p.

Jetzt müssten wir dann aber alle möglichen Schleifen haben.
 
Allein der vollständigkeit halber:

Ab Java 1.5 (ist momentan im Beta Stadium) gibt es ein for each Konstrukt, das sich vor allem auf Collections jeglicher Art auswirkt.
 
danke vielmal. für die antworten. werd mal ein bisschen damit rumprobieren.
habe momentan den dev als kostenlose alternative zu visual sudio .net (das haben wir in der schule)
ist der dev gut oder kennt ihr einen besseren?
 
Also ich find den dev nicht so gut. Hab den bisher aber auch. Halt für C++. Ist denk ich mal kein so großer Unterschied. Aber außer MinGW kenne ich für C++ keine Freeware Alternative.
 
Zurück
Oben