logo

Безкраен цикъл в C

Какво е безкраен цикъл?

Безкрайният цикъл е циклична конструкция, която не прекратява цикъла и го изпълнява завинаги. Нарича се още ан безсрочен цикъл или ан безкраен цикъл. Той или произвежда непрекъснат изход, или няма изход.

Кога да използвате безкраен цикъл

Безкрайният цикъл е полезен за онези приложения, които приемат въвеждането от потребителя и генерират изхода непрекъснато, докато потребителят излезе ръчно от приложението. В следните ситуации може да се използва този тип цикъл:

булево към низ java
  • Всички операционни системи работят в безкраен цикъл, тъй като той не съществува след изпълнение на някаква задача. Излиза от безкраен цикъл само когато потребителят ръчно изключи системата.
  • Всички сървъри работят в безкраен цикъл, докато сървърът отговаря на всички клиентски заявки. Излиза от неопределен цикъл само когато администраторът изключи ръчно сървъра.
  • Всички игри също се изпълняват в безкраен цикъл. Играта ще приема потребителските заявки, докато потребителят излезе от играта.

Можем да създадем безкраен цикъл чрез различни структури на цикъл. Следните са структурите на цикъла, чрез които ще дефинираме безкрайния цикъл:

  • за цикъл
  • докато цикъл
  • do-while цикъл
  • отидете на изявление
  • C макроси

За цикъл

Нека да видим безкрайно 'за' цикъл. Следното е определението за безкраен за цикъл:

 for(; ;) { // body of the for loop. } 

Както знаем, че всички части на цикъл 'за'. са незадължителни и в горния for цикъл не сме споменали никакво условие; така че този цикъл ще се изпълнява безкрайно много пъти.

Нека разберем чрез пример.

 #include int main() { for(;;) { printf('Hello javatpoint'); } return 0; } 

В горния код изпълняваме цикъла „for“ безкрайно много пъти, така че „Здравей javatpoint“ ще се показва безкрайно.

Изход

Безкраен цикъл в C

докато цикъл

Сега ще видим как да създадем безкраен цикъл с помощта на цикъл while. Следното е дефиницията за безкрайния цикъл while:

 while(1) { // body of the loop.. } 

В горния цикъл while поставяме '1' в условието на цикъла. Както знаем, всяко ненулево цяло число представлява истинското условие, докато '0' представлява грешното условие.

Нека да разгледаме един прост пример.

 #include int main() { int i=0; while(1) { i++; printf('i is :%d',i); } return 0; } 

В горния код сме дефинирали цикъл while, който се изпълнява безкрайно много пъти, тъй като не съдържа никакви условия. Стойността на „i“ ще се актуализира безкраен брой пъти.

Изход

Безкраен цикъл в C

do..while цикъл

The правя..докато цикъл може да се използва и за създаване на безкраен цикъл. Следва синтаксисът за създаване на безкрайността правя..докато цикъл.

 do { // body of the loop.. }while(1); 

Цикълът do..while по-горе представлява условието за безкрайност, тъй като предоставяме стойността „1“ вътре в условието за цикъл. Както вече знаем, че ненулево цяло число представлява истинското условие, така че този цикъл ще се изпълнява безкрайно много пъти.

изявление goto

Можем също да използваме командата goto, за да дефинираме безкрайния цикъл.

 infinite_loop; // body statements. goto infinite_loop; 

В горния код операторът goto прехвърля контрола към безкрайния цикъл.

Макроси

Можем също така да създадем безкраен цикъл с помощта на макроконстанта. Нека разберем чрез пример.

 #include #define infinite for(;;) int main() { infinite { printf('hello'); } return 0; } 

В горния код сме дефинирали макрос с име „безкраен“ и неговата стойност е „за(;;)“. Когато думата „безкрайно“ се появи в програма, тя ще бъде заменена с „за(;;)“.

съставен първичен ключ

Изход

Безкраен цикъл в C

Досега сме виждали различни начини за дефиниране на безкраен цикъл. Нуждаем се обаче от някакъв подход, за да излезем от безкрайния цикъл. За да излезем от безкрайния цикъл, можем да използваме командата break.

Нека разберем чрез пример.

 #include int main() { char ch; while(1) { ch=getchar(); if(ch=='n') { break; } printf('hello'); } return 0; } 

В горния код сме дефинирали цикъла while, който ще се изпълнява безкраен брой пъти, докато не натиснем клавиша 'n'. Добавихме оператора „if“ в цикъла while. Операторът 'if' съдържа ключовата дума break, а ключовата дума break извежда контрола извън цикъла.

Непреднамерени безкрайни цикли

Понякога възниква ситуация, при която възникват неволни безкрайни цикли поради грешка в кода. Ако сме начинаещи, тогава става много трудно да ги проследим. По-долу са някои мерки за проследяване на непреднамерен безкраен цикъл:

  • Трябва внимателно да разгледаме точките и запетая. Понякога поставяме точка и запетая на грешното място, което води до безкраен цикъл.
 #include int main() { int i=1; while(i<=10); { printf('%d', i); i++; } return 0; < pre> <p>In the above code, we put the semicolon after the condition of the while loop which leads to the infinite loop. Due to this semicolon, the internal body of the while loop will not execute.</p> <ul> <li>We should check the logical conditions carefully. Sometimes by mistake, we place the assignment operator (=) instead of a relational operator (= =).</li> </ul> <pre> #include int main() { char ch=&apos;n&apos;; while(ch=&apos;y&apos;) { printf(&apos;hello&apos;); } return 0; } </pre> <p>In the above code, we use the assignment operator (ch=&apos;y&apos;) which leads to the execution of loop infinite number of times.</p> <ul> <li>We use the wrong loop condition which causes the loop to be executed indefinitely.</li> </ul> <pre> #include int main() { for(int i=1;i&gt;=1;i++) { printf(&apos;hello&apos;); } return 0; } </pre> <p>The above code will execute the &apos;for loop&apos; infinite number of times. As we put the condition (i&gt;=1), which will always be true for every condition, it means that &apos;hello&apos; will be printed infinitely.</p> <ul> <li>We should be careful when we are using the <strong>break</strong> keyword in the nested loop because it will terminate the execution of the nearest loop, not the entire loop.</li> </ul> <pre> #include int main() { while(1) { for(int i=1;i<=10;i++) { if(i%2="=0)" break; } return 0; < pre> <p>In the above code, the while loop will be executed an infinite number of times as we use the break keyword in an inner loop. This break keyword will bring the control out of the inner loop, not from the outer loop.</p> <ul> <li>We should be very careful when we are using the floating-point value inside the loop as we cannot underestimate the floating-point errors.</li> </ul> <pre> #include int main() { float x = 3.0; while (x != 4.0) { printf(&apos;x = %f
&apos;, x); x += 0.1; } return 0; } </pre> <p>In the above code, the loop will run infinite times as the computer represents a floating-point value as a real value. The computer will represent the value of 4.0 as 3.999999 or 4.000001, so the condition (x !=4.0) will never be false. The solution to this problem is to write the condition as (k<=4.0).< p> <p> <strong> <em>Infinite loops</em> </strong> can cause problems if it is not properly <strong> <em>controlled</em> </strong> or <strong> <em>designed</em> </strong> , leading to excessive <strong> <em>CPU resource consumption</em> </strong> and unresponsiveness in programs or systems. <strong> <em>Implementing mechanisms</em> </strong> to break out of infinite loops is crucial when necessary.</p> <p>It is advisable to include <strong> <em>exit conditions</em> </strong> within the <strong> <em>loop</em> </strong> to prevent unintentional infinite loops. These conditions can be based on <strong> <em>user input</em> </strong> , <strong> <em>specific events or flags</em> </strong> , or <strong> <em>time limits</em> </strong> . The loop will terminate by incorporating appropriate <strong> <em>exit conditions</em> </strong> after fulfilling its purpose or meeting specific criteria.</p> <h2>Techniques for Preventing Infinite Loops:</h2> <p>Although <strong> <em>infinite loops</em> </strong> can occasionally be intended, they are frequently <strong> <em>unintended</em> </strong> and can cause program <strong> <em>freezes</em> </strong> or <strong> <em>crashes</em> </strong> . Programmers can use the following strategies to avoid inadvertent infinite loops:</p> <p> <strong>Add a termination condition:</strong> Make sure the loop has a condition that can ultimately evaluate to <strong> <em>false</em> </strong> , allowing it to <strong> <em>end</em> </strong> .</p> <p> <strong>Employ a counter:</strong> Establish a cap on the number of iterations and implement a counter that increases with each loop iteration. Thus, even if the required condition is not satisfied, the loop will ultimately come to an <strong> <em>end</em> </strong> .</p> <p> <strong>Introduce a timeout system:</strong> If the time limit is reached, the <strong> <em>loop</em> </strong> will be stopped. Use a timer or system functions to measure the amount of time that has passed.</p> <p> <strong>Use external or user-provided triggers:</strong> Design the loop to end in response to certain user input or outside events.</p> <p>In certain cases, <strong> <em>infinite loops</em> </strong> may be intentionally employed in specialized algorithms or <strong> <em>system-level operations</em> </strong> . For instance, real-time systems or embedded systems utilize infinite loops to monitor inputs or execute specific tasks continuously. However, care must be taken to manage such <strong> <em>loops properly</em> </strong> , avoiding any adverse effects on system performance or responsiveness.</p> <p>Modern programming languages and development frameworks often offer built-in mechanisms to handle infinite loops more efficiently. For example, <strong> <em>Graphical user interface (GUI) frameworks</em> </strong> provide event-driven architectures where programs wait for user input or system events, eliminating the need for explicit infinite loops.</p> <p>It is essential to exercise caution and discretion when using <strong> <em>infinite loops</em> </strong> . They should only be employed when there is a clear and valid reason for an indefinite running loop, and adequate safeguards must be implemented to prevent any negative impact on the program or system.</p> <h2>Conclusion:</h2> <p>In conclusion, an <strong> <em>infinite loop</em> </strong> in C constitutes a looping construct that never ends and keeps running forever. Different <strong> <em>loop structures</em> </strong> , such as the <strong> <em>for loop, while loop, do-while loop, goto statement, or C macros</em> </strong> , can be used to produce it. Operating systems, servers, and video games all frequently employ infinite loops since they demand constant human input and output until manual termination. On the other hand, the <strong> <em>unintentional infinite loops</em> </strong> might happen because of code flaws, which are difficult to identify, especially for newcomers.</p> <p>Careful consideration of <strong> <em>semicolons, logical criteria</em> </strong> , and <strong> <em>loop termination</em> </strong> requirements is required to prevent inadvertent infinite loops. Infinite loops can result from improper semicolon placement or the use of assignment operators in place of relational operators. False loop conditions that always evaluate to true may likewise result in an <strong> <em>infinite loop</em> </strong> . Furthermore, since the <strong> <em>break keyword</em> </strong> only ends the closest loop, caution must be used when using it in nested loops. Furthermore, as they may make the loop termination condition impossible to meet, floating-point mistakes should be considered while working with floating-point numbers.</p> <hr></=4.0).<></p></=10;i++)></pre></=10);>

В горния код използваме оператора за присвояване (ch='y'), който води до изпълнение на цикъл безкраен брой пъти.

  • Използваме грешно условие за цикъл, което кара цикъла да се изпълнява за неопределено време.
 #include int main() { for(int i=1;i&gt;=1;i++) { printf(&apos;hello&apos;); } return 0; } 

Горният код ще изпълни „for цикъла“ безкраен брой пъти. Тъй като поставяме условието (i>=1), което винаги ще бъде вярно за всяко условие, това означава, че „здравей“ ще се отпечатва безкрайно.

  • Трябва да внимаваме, когато използваме прекъсвам ключова дума във вложения цикъл, защото ще прекрати изпълнението на най-близкия цикъл, а не на целия цикъл.
 #include int main() { while(1) { for(int i=1;i<=10;i++) { if(i%2="=0)" break; } return 0; < pre> <p>In the above code, the while loop will be executed an infinite number of times as we use the break keyword in an inner loop. This break keyword will bring the control out of the inner loop, not from the outer loop.</p> <ul> <li>We should be very careful when we are using the floating-point value inside the loop as we cannot underestimate the floating-point errors.</li> </ul> <pre> #include int main() { float x = 3.0; while (x != 4.0) { printf(&apos;x = %f
&apos;, x); x += 0.1; } return 0; } </pre> <p>In the above code, the loop will run infinite times as the computer represents a floating-point value as a real value. The computer will represent the value of 4.0 as 3.999999 or 4.000001, so the condition (x !=4.0) will never be false. The solution to this problem is to write the condition as (k<=4.0).< p> <p> <strong> <em>Infinite loops</em> </strong> can cause problems if it is not properly <strong> <em>controlled</em> </strong> or <strong> <em>designed</em> </strong> , leading to excessive <strong> <em>CPU resource consumption</em> </strong> and unresponsiveness in programs or systems. <strong> <em>Implementing mechanisms</em> </strong> to break out of infinite loops is crucial when necessary.</p> <p>It is advisable to include <strong> <em>exit conditions</em> </strong> within the <strong> <em>loop</em> </strong> to prevent unintentional infinite loops. These conditions can be based on <strong> <em>user input</em> </strong> , <strong> <em>specific events or flags</em> </strong> , or <strong> <em>time limits</em> </strong> . The loop will terminate by incorporating appropriate <strong> <em>exit conditions</em> </strong> after fulfilling its purpose or meeting specific criteria.</p> <h2>Techniques for Preventing Infinite Loops:</h2> <p>Although <strong> <em>infinite loops</em> </strong> can occasionally be intended, they are frequently <strong> <em>unintended</em> </strong> and can cause program <strong> <em>freezes</em> </strong> or <strong> <em>crashes</em> </strong> . Programmers can use the following strategies to avoid inadvertent infinite loops:</p> <p> <strong>Add a termination condition:</strong> Make sure the loop has a condition that can ultimately evaluate to <strong> <em>false</em> </strong> , allowing it to <strong> <em>end</em> </strong> .</p> <p> <strong>Employ a counter:</strong> Establish a cap on the number of iterations and implement a counter that increases with each loop iteration. Thus, even if the required condition is not satisfied, the loop will ultimately come to an <strong> <em>end</em> </strong> .</p> <p> <strong>Introduce a timeout system:</strong> If the time limit is reached, the <strong> <em>loop</em> </strong> will be stopped. Use a timer or system functions to measure the amount of time that has passed.</p> <p> <strong>Use external or user-provided triggers:</strong> Design the loop to end in response to certain user input or outside events.</p> <p>In certain cases, <strong> <em>infinite loops</em> </strong> may be intentionally employed in specialized algorithms or <strong> <em>system-level operations</em> </strong> . For instance, real-time systems or embedded systems utilize infinite loops to monitor inputs or execute specific tasks continuously. However, care must be taken to manage such <strong> <em>loops properly</em> </strong> , avoiding any adverse effects on system performance or responsiveness.</p> <p>Modern programming languages and development frameworks often offer built-in mechanisms to handle infinite loops more efficiently. For example, <strong> <em>Graphical user interface (GUI) frameworks</em> </strong> provide event-driven architectures where programs wait for user input or system events, eliminating the need for explicit infinite loops.</p> <p>It is essential to exercise caution and discretion when using <strong> <em>infinite loops</em> </strong> . They should only be employed when there is a clear and valid reason for an indefinite running loop, and adequate safeguards must be implemented to prevent any negative impact on the program or system.</p> <h2>Conclusion:</h2> <p>In conclusion, an <strong> <em>infinite loop</em> </strong> in C constitutes a looping construct that never ends and keeps running forever. Different <strong> <em>loop structures</em> </strong> , such as the <strong> <em>for loop, while loop, do-while loop, goto statement, or C macros</em> </strong> , can be used to produce it. Operating systems, servers, and video games all frequently employ infinite loops since they demand constant human input and output until manual termination. On the other hand, the <strong> <em>unintentional infinite loops</em> </strong> might happen because of code flaws, which are difficult to identify, especially for newcomers.</p> <p>Careful consideration of <strong> <em>semicolons, logical criteria</em> </strong> , and <strong> <em>loop termination</em> </strong> requirements is required to prevent inadvertent infinite loops. Infinite loops can result from improper semicolon placement or the use of assignment operators in place of relational operators. False loop conditions that always evaluate to true may likewise result in an <strong> <em>infinite loop</em> </strong> . Furthermore, since the <strong> <em>break keyword</em> </strong> only ends the closest loop, caution must be used when using it in nested loops. Furthermore, as they may make the loop termination condition impossible to meet, floating-point mistakes should be considered while working with floating-point numbers.</p> <hr></=4.0).<></p></=10;i++)>

В горния код цикълът ще се изпълнява безкрайно много пъти, тъй като компютърът представя стойност с плаваща запетая като реална стойност. Компютърът ще представи стойността на 4.0 като 3.999999 или 4.000001, така че условието (x !=4.0) никога няма да бъде невярно. Решението на този проблем е да напишете условието като (k<=4.0).< p>

Безкрайни цикли може да причини проблеми, ако не е правилно контролирани или проектирани , което води до прекомерно Консумация на ресурси на процесора и липса на реакция в програми или системи. Механизми за изпълнение излизането от безкрайните цикли е от решаващо значение, когато е необходимо.

Препоръчително е да включите условия за излизане в рамките на цикъл за предотвратяване на неволни безкрайни цикли. Тези условия могат да се основават на потребителско въвеждане , конкретни събития или знамена , или времеви ограничения . Цикълът ще приключи чрез включване на подходящо условия за излизане след като изпълни предназначението си или отговаря на определени критерии.

Техники за предотвратяване на безкрайни цикли:

Макар че безкрайни цикли понякога могат да бъдат предназначени, те са често непредвидено и може да предизвика програма замръзва или катастрофи . Програмистите могат да използват следните стратегии, за да избегнат неволни безкрайни цикли:

Добавете условие за прекратяване: Уверете се, че цикълът има условие, което в крайна сметка може да се оцени на невярно , което му позволява да край .

Използвайте брояч: Установете ограничение за броя повторения и внедрете брояч, който се увеличава с всяка итерация на цикъла. По този начин, дори ако изискваното условие не е изпълнено, цикълът в крайна сметка ще стигне до an край .

Въведете система за изчакване: Ако срокът е достигнат, цикъл ще бъде спряно. Използвайте таймер или системни функции, за да измерите изминалото време.

Използвайте външни или предоставени от потребителя тригери: Проектирайте цикъла така, че да приключи в отговор на определен потребителски вход или външни събития.

В определени случаи, безкрайни цикли могат да бъдат умишлено използвани в специализирани алгоритми или операции на системно ниво . Например системите в реално време или вградените системи използват безкрайни цикли за наблюдение на входове или непрекъснато изпълнение на специфични задачи. Трябва обаче да се внимава за управлението на такива зацикля правилно , избягвайки всякакви неблагоприятни ефекти върху производителността или отзивчивостта на системата.

Съвременните езици за програмиране и рамки за разработка често предлагат вградени механизми за по-ефективно обработване на безкрайни цикли. Например, Рамки за графичен потребителски интерфейс (GUI). предоставят управлявани от събития архитектури, при които програмите чакат потребителски вход или системни събития, елиминирайки необходимостта от изрични безкрайни цикли.

какво е map java

От съществено значение е да бъдете внимателни и дискретни при употреба безкрайни цикли . Те трябва да се използват само когато има ясна и валидна причина за неопределено работещ цикъл и трябва да се прилагат адекватни предпазни мерки, за да се предотврати всяко отрицателно въздействие върху програмата или системата.

Заключение:

В заключение ан безкраен цикъл в C представлява зацикляща конструкция, която никога не свършва и продължава да работи вечно. Различен контурни структури , Както и for цикъл, while цикъл, do-while цикъл, goto израз или C макроси , може да се използва за производството му. Операционните системи, сървърите и видеоигрите често използват безкрайни цикли, тъй като изискват постоянен човешки вход и изход до ръчно прекратяване. От друга страна, непреднамерени безкрайни цикли може да се случи поради пропуски в кода, които са трудни за идентифициране, особено за новодошлите.

Внимателно разглеждане на точка и запетая, логически критерии , и прекъсване на цикъла изискват се изисквания за предотвратяване на непреднамерени безкрайни цикли. Безкрайните цикли могат да бъдат резултат от неправилно поставяне на точка и запетая или използване на оператори за присвояване вместо релационни оператори. Фалшивите условия на цикъл, които винаги се оценяват като true, също могат да доведат до an безкраен цикъл . Освен това, тъй като break ключова дума завършва само най-близкия цикъл, трябва да се внимава, когато се използва във вложени цикли. Освен това, тъй като те могат да направят условието за прекратяване на цикъла невъзможно за изпълнение, грешките с плаваща запетая трябва да се вземат предвид при работа с числа с плаваща запетая.