Enquanto lacetes em c ++

Uma característica fundamental na programação C ++ é a capacidade de circuito. C ++ oferece três construções de loop em C ++. o enquanto

laço tem o seguinte formato:

Video: Why C++ Sails When the Vasa Sank

while (expressão) {// coisas para fazer em um loop} // continue aqui uma vez expressão é falsa

Quando um programa vem em cima de um enquanto circuito, que em primeiro lugar a expressão nos parênteses. Se esta expressão é verdade, em seguida, o controlo passa para a primeira linha no interior da {. Quando atinge o controle }, o programa retorna para a expressão e começa de novo. O controlo continua para o ciclo através de codeína as cintas até expressão avalia a falso (Ou até que outra coisa quebra o loop).

Video: Parte 4 (Dev-C++) - Problema da Equação do 2º Grau com Condições

Os seguintes Fatorial programa demonstra o enquanto loop:

Factorial (N) = N * (N-1) * (N-2) * ... * 1 //// factorial - calcular factorial utilizando o enquanto // construct.//#include #incluir #incluir usando espaço de nomes std-int principal (int nNumberofArgs, char * pszArgs []) {// introduzir o número para calcular o fatorial ofint nTarget-cout lt; lt; "Este programa calcula factorial.n"lt; lt; "Insira um número para tomar fatorial de: "CIN II-III gt; gt; nTarget - // inicia com um acumulador que é inicializado para 1int nAccumulator = 1int nValue = 1-while (nValue lt; = nTarget) {cout lt; lt; nAccumulator lt; lt; " * "lt; lt; nValue lt; lt; " é igual a "-nAccumulator = nAccumulator * nValue-cout lt; lt; nAccumulator lt; lt; endl-nValue ++ -} // exibir o resultcout lt; lt; nTarget lt; lt; " factorial é "lt; lt; nAccumulator lt; lt; endl - // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - 0-} retornar

O programa começa por avisar o usuário para um valor-alvo. O programa lê este valor em nTarget. O programa, em seguida, inicializa ambos nAccumulator e nValue para 1 antes de entrar no circuito.

Video: CppCon 2016: James McNellis “Introduction to C++ Coroutines"

(Preste atenção - esta é a parte interessante.) O programa compara nValue para nTarget. Suponha que o usuário tinha entrado um valor-alvo de 5. No primeiro ciclo, a questão torna-se, “é um menor ou igual a 5?” A resposta é, obviamente, verdade, assim o controlo flui para o circuito.

O programa gera o valor de nAccumulator (1) e nValue (Também um) antes de multiplicar nAccumulator de nValue e armazenando o resultado de volta para nAccumulator.

Video: C++ - Correção de Atividades #20



A última declaração nos incrementos de loop nValue 1-2.

Feito isso, o controle passa para trás até o enquanto declaração onde nValue (Agora 2) é comparado com nTarget (Ainda 5). “É de 2 menor ou igual a 5?” Claramente, verdade- tão controle flui de volta para o loop. nAccumulator agora está definido para o resultado de nAccumulator (1) vezes nValue (2). Os últimos incrementos declaração nValue a 3.

Este ciclo de diversão continua até nValue atinge o valor 6, o que já não é menos do que ou igual a 5. Neste ponto, o controlo passa para a primeira instrução para além da cinta fechada }. Isso é mostrado graficamente aqui.

A saída real do programa aparece como se segue para um valor de entrada de 5:

Este programa calcula factorial.Enter um número para tomar fatorial de: 51 * 1 é igual a 11 * 2 é igual a 22 * ​​3 é igual a 66 * 4 é igual a 2424 * 5 é igual a 1205 fatorial é 120Press Enter para continuar. . .

Você não está garantido que o código dentro das chaves de um enquanto laço é executado em tudo: Se a expressão condicional é falsa a primeira vez que é avaliada, o controle passa em torno das chaves sem nunca mergulho em Considere, por exemplo, a saída do programa fatorial quando o usuário insere um valor-alvo de 0.:

Este programa calcula factorial.Enter um número para tomar fatorial de: 00 factorial é 1Prima Enter para continuar. . .

Não há linhas de saída são gerados a partir de dentro do loop porque a condição “é nValue menor ou igual a 0” era falsa até mesmo para o valor inicial de 1. O corpo do enquanto laço nunca foi executado.


Publicações relacionadas