Mehrere Schleifen gleichzeitig



  • Hallo,

    ich fange in der Schule an "C" zu lernen, noch haben wir nichts programmiert geschweigedenn getest, aber ich möchte da mal ein bisschen rumspielen.

    Ich habe jetzt eine Schleife

    /* for10.c */
    #include <stdio.h>
    
    int main(void) {
       for(;;)
          printf("Willkommen in der endlos Schleife Nr.1!!\n");
       return 0;
    }
    

    Jetzt möchte ich aber das gleichzeitig noch eine Schleife läuft, also das dass dann so aussieht:

    Willkommen in der endlos Schleife Nr.1!!
    Willkommen in der endlos Schleife Nr.2!!
    Willkommen in der endlos Schleife Nr.1!!
    Willkommen in der endlos Schleife Nr.2!!
    ...

    Also zwei endlos Schleifen gleichzeitig



  • #include <iostream> 
    
    int main()
    { 
    	int i = 1;
    
        for(; i <= 10; i++)
            std::cout << "Willkommen im Schleifendurchgang " << i << "!" << std::endl;
    
    	std::cin >> i;
    }
    


  • Hallo,

    Gleichzeitig zwei Schleifen abarbeiten geht nicht so einfach. Dafür würdest du Threads benötigen. Die von dir oben beschrieben Ausgabe läßt sich aber mit nur einer Schleife erzielen.

    /* for10.c */
    #include <stdio.h>
    
    int main(void) {
       for(;;)
       {
          printf("Willkommen in der endlos Schleife Nr.1!!\n");
          printf("Willkommen in der endlos Schleife Nr.2!!\n");
       }
       return 0;
    }
    


  • Du kannst in einer äußeren, endlosen Schleife eine innere Schleife durchlaufen lassen. Diese braucht natürlich, um zur äußeren Schleife zurückzuspringen, eine Abbruchbedingung.
    Die 2. Schleife ist somit keine Endlos - Schleife, was man aber für dein Programm auch nicht braucht.

    [cpp]// 2 Schleifen
    
    #include<iostream>
    #include<conio.h>
    
    using namespace std;
    
    int main() {
    
        // 1. Schleife
        for(;;) {
            cout << "Willkommen in der 1. Schleife!" << endl;
    
            // 2. Schleife
            for(int i = 1; i < 2; ++i) {
                cout << "Willkommen in der 2. Schleife!" << endl;
            }
        }
    }[/cpp]
    

    Grüße, Bobby - Karle



  • TIberiu schrieb:

    [...]
    Also zwei endlos Schleifen gleichzeitig

    Das geht deshalb nicht (glaub die Erklärung wurde noch nicht genannt 😉 ), da EIN Prozessor IMMER nur
    EINE Sache (=> Anweisung) zu EINEM Zeitpunkt bearbeiten kann, also nicht mehrere. Auch Threads (=> Ausführungsstränge)
    bzw. Multitasking (=> multiple Programme paralell ausführbar) simulieren diesen 'Paralellbetrieb' nur,
    indem das OS zwischen den Threads bzw. Tasks blitzschnell hin und her schaltet.

    Hoffe das war verständlich 💡 .



  • Das geht deshalb nicht (glaub die Erklärung wurde noch nicht genannt ), da EIN Prozessor IMMER nur
    EINE Sache (=> Anweisung) zu EINEM Zeitpunkt bearbeiten kann, also nicht mehrere. Auch Threads (=> Ausführungsstränge)
    bzw. Multitasking (=> multiple Programme paralell ausführbar) simulieren diesen 'Paralellbetrieb' nur,
    indem das OS zwischen den Threads bzw. Tasks blitzschnell hin und her schaltet.

    👍

    Ich nehme an du möchtest jetzt nur herumprobieren;
    Du kannst ja die Aufgaben die die Schleife erledigen soll aufteilen:

    for(;;){
    
    //Teil 1
    
    //Teil 2
    
    }
    

    Dabei kannst du ja Bedingungen für die beiden Teile erschaffen...
    Aber das wirst du ja in der Schule lernen...
    Nebenbei kannst du dir ja ein bzw. mehrere Tutorials suchen und herumprogrammieren/bieren

    MfG Kuldren



  • @CodeFinder
    Deine Argumentation verliert bei Betrachtung der heutigen Prozessorlandschaft (Dual Core und mehr) etwas an Bedeutung. 🙂


Anmelden zum Antworten