Como criar loops infinitos em c programação

Cuidado com o loop infinito! Quando um programa de C introduz um ciclo sem fim, ou ele vomita saída repetidamente sem fim ou ele fica lá apertado e não faz nada. Bem, ele está fazendo o que você pediu para fazer, que é sentar-se e girar para sempre.

Às vezes, essa configuração é feito de propósito, mas a maioria acontece por causa de erro do programador. E com a forma como as alças são criados em C, é fácil involuntariamente circuito ao infinito.

Uma maneira comum de fazer um loop infinito ilustra um loop infinito comum, que é um erro de programação, não é um erro de sintaxe.

Uma maneira comum de FAZEM um loop infinito

#include int main () {int x-x para (= 0 X = 10 X = x + 1) {(coloca"O que você está olhando?") -} return (0) -}

O problema com o código de uma forma comum para fazer um loop infinito é que condição de saída do por do comunicado é sempre verdadeiro: x = 10. Lê-lo novamente se você não pegá-lo pela primeira vez, ou apenas fazer o exercício 9-18.

Exercício 1: Digite o código-fonte de uma maneira comum de fazer um loop infinito. Salvar, construir e executar.

O compilador pode avisá-lo sobre a condição VERDADEIRA constante na instrução for. Code :: Blocks deveria fazer isso, e qualquer outro compilador, se você aumentaram a sua verificação de erros. Caso contrário, o programa compila e executa - infinitamente.

  • Para quebrar para fora de um anel sem fim, pressione Ctrl + C no teclado. Este truque só funciona para programas de console, e pode nem sempre funciona. Se isso não acontecer, você precisa matar o processo correr solto.

  • las sem-fim também são referidos como loops infinitos.

Como repetir indefinidamente, mas de propósito

Ocasionalmente, um programa precisa de um loop infinito. Por exemplo, um microcontrolador pode carregar um programa que é executado enquanto o dispositivo está ligado. Quando você configura um loop de propósito em C, uma das duas afirmações é usado:

para(--)

Leia esta declaração como “para sempre”. Sem itens entre parênteses, mas ainda com os necessários dois ponto e vírgula, o loop repete eternamente - mesmo depois que a vaca tussa. Aqui está o loop while equivalente:

enquanto (1)

O valor entre parênteses não precisa necessariamente ser 1- quaisquer obras valor verdadeiro ou diferentes de zero. Quando o laço é interminável de propósito, no entanto, a maioria dos programadores definir o valor para 1 simplesmente para auto-documento que eles sabem o que está acontecendo.

Como sair de um loop

Qualquer circuito pode ser rescindido imediatamente - incluindo loops infinitos - usando uma instrução break dentro do grupo de repetição do ciclo de declarações. Quando break for encontrada, looping paradas e execução do programa pega com a seguinte declaração após colchete final da loop. Get Me Outta Here! demonstra o processo.

Tira-me daqui!

#include int main () {int contar-count = 0-enquanto (1) {printf ("% D, ", Contam) -count = contagem + 1-if (contagem gt; 50)} break putchar ( `n`) - retorno (0) -}

O loop while na linha 8 está configurado para durar para sempre, mas o caso de teste na linha 12 pode pará-lo: Quando o valor de contagem é maior do que 50, a instrução break (consulte a Linha 13) é executado e pára de loop.



exercício 2: Criar e executar um novo projeto usando o código-fonte do tira-me daqui!

exercício 3: Reescrever o código-fonte do tira-me daqui! de modo que um sem fim para o laço é usado em vez de um sem fim enquanto loop.

Você não precisa construir um loop infinito de usar a instrução break. Você pode sair de qualquer loop. Quando o fizer, a execução continua com a primeira declaração após colchete final da loop.

Como você pode estragar um laço com C

Há duas maneiras comuns para atrapalhar um loop. Esses pontos de conflito surgir para iniciantes e profissionais. A única maneira de evitar essas manchas é manter um olho afiado para que você possa detectar ‘em rápido.

O primeiro goof-up está especificando uma condição que nunca pode ser Met por exemplo:

para (x = 1-x == 10-x = x + 1)

Na linha anterior, a condição de saída é falso antes do loop gira uma vez, para que o loop nunca é executado. Este erro é quase tão insidiosa como a utilização de um operador de atribuição (um único sinal de igual) em vez de “é igual a” operador (como já visto).

Outro erro comum é colocar mal o ponto e vírgula, como em

para (x = 1-xlt; 14-x = x + 1) - {coloca ( “cirurgia do ombro dorido”) -}

Porque a primeira linha, a instrução for, termina em um ponto e vírgula, o compilador acredita que a linha é todo o loop. O código vazia repete 13 vezes, que é o que a instrução for dita. A declaração puts () é então executada uma vez.

Esses semicolons desonestos pode ser frustrante!

O problema é pior com while porque a estrutura do-while requer um ponto e vírgula após a final, enquanto comunicado. Na verdade, esquecendo que ponto e vírgula em particular é também uma fonte de aflição. Para um loop while tradicional, você não fazer isso:

while (XLT; 14) - {puts ( “cirurgia no ombro Sore”) -}

A coisa severamente estúpido sobre esses erros vírgula é que o compilador não pegá-los. Ele acredita que a sua intenção é ter um loop sem declarações. Tal coisa é possível.

UMA PARA LOOP SEM CORPO

#include int main () {int x-para (x = 0-xlt; 10-x = x + 1, printf ("% dn", X)) - retorno (0) -}

No exemplo mostrado em A fou Loop com Nenhum corpo, o ponto e vírgula é colocado na linha após a instrução for (consulte a linha 8 em A fou Loop com Nenhum corpo). Isso mostra intenção deliberada.

Você pode ver que dois itens são colocados no para parênteses da declaração, ambos separados por uma vírgula. Isso é perfeitamente legal, e ele funciona, embora não seja completamente legível.

exercício 4: Digite o código-fonte do A fou Loop com Nenhum corpo em seu editor. Construir e executar.

Embora você pode carregar itens em um de parênteses da declaração, é raro e definitivamente não é recomendado, pelo amor de legibilidade.


Publicações relacionadas