O que é laço de comparação programação

O que é laço de comparação programação

Bem vindo a aula 69 de nosso curso gratuito de programação com a linguagem C. Na aula de hoje vamos relembrar para fixar as diferenças entre as estruturas for, while e do while.

Mas antes não esqueça de baixar aqui a lista de exercícios para as próximas aulas.

É importante ressaltar algumas diferenças entre as três estruturas de repetição que estudamos:

  • for (para)
  • while (enquanto)
  • do{}while (faça enquanto)

A principal diferença entre a estrutura for e as demais é que para usar a estrutura for precisamos saber quantas repetições serão feitas, ou seja, precisamos saber as condições de início e fim.

Se no problema que você está resolvendo você não é capaz de identificar as condições inicial e final, então provavelmente não é possível utilizar uma repetição do tipo for.

Outro detalhe importante é que todo for pode ser substituído por um while, desde que o próprio programador faça o incremento da variável contadora. Contudo, o oposto não é verdade. Um while não pode ser substituído por um for. A seguir apresento um exemplo para imprimir os números de 0 a 10 com as estruturas de repetição for e do while.

int i; printf("\nGerado com for: "); for(i = 0; i <= 10; i++) printf("%d ", i); i = 0; printf("\n\nGerado com while: "); while(i <= 10){ printf("%d ", i++); // observe o incremento da variável i }

Quanto às estruturas while e do{}while, as diferenças são pequenas e normalmente onde se usa uma é possível também utilizar a outra com pequenas alterações no código.

O curso C Progressivo vai te ensinar agora o que é, provavelmente, o laço mais importante e usado na linguagem de programação C: o laço FOR, que será usado várias vezes durante nossa apostila.

  • Leia este conteúdo no seu computador: Apostila C Progressivo
Se você notar bem em nossa aula sobre o laço WHILE, vai notar que precisamos inicializar uma variável - chamamos ela de 'count' - para usar dentro dos parênteses do WHILE, e incrementamos ou decrementamos essa variável ao fim do laço WHILE. Com o tempo isso se torna um pouco incômodo, pois tem que inicializar e fazer operações em lugares diferentes de seu código. Talvez agora você não veja muitos problemas e complicações, mas com o passar do tempo e suas aplicações em C forem ficando mais complexas, isso de inicializar e mudar o valor das variáveis se torna um pouco bagunçado. No decorrer desse tutorial de C, e de outros artigos do site, você verá que existem muitas ferramentas que servem como atalho para os programadores. Esses atalhos visam aumentar a eficiência do programador C, para que não perca muito tempo com detalhes. Podemos ver o laço FOR como um desses atalhos, pois, em suma, o que é possível fazer com o laço WHILE, é possível fazer com o laço FOR. Por que não usar o WHILE, então? Porque o laço FOR é mais simples e eficiente de ser usado, na maioria das vezes. Mas não há nada que nos impeça de usar o laço WHILE, e algumas vezes ele até mais útil que o FOR. A sintaxe é a seguinte:

for(inicio_do_laço ; condição ; termino_de_cada_iteração)


{
//código a ser
//executado aqui
} Isso quer dizer que, ao iniciar o laço for, ele faz o que está no trecho "inicio_do_laço". Geralmente se usa para inicializar algumas variáveis (o que fazíamos antes de iniciar o laço WHILE). Após inicializar, o for testa a condição. Se ela resultar verdadeira, o código é executado e em seguida o 'termino_de_cada_iteração" é executado. A condição é testada novamente, e se for verdadeira, executa o 'termino_de_cada_iteração" também, e assim continua até que a condição resulte no valor lógico FALSO (0) e o laço FOR termina. Vamos ver na prática como usar o laço FOR através de exemplos de programas em C.

Exemplo:


Contando de 1 até 10 com o laço FOR No exemplo a seguir, apenas declaramos a variável 'count', e iniciamos ela dentro do laço for. O primeiro teste é se '1 <= 10', como é verdadeiro, o código que imprime o número é executado. Após o término da execução, o count é incrementado em 1. Agora count=2. Na nova iteração, testamos a seguinte condição '2 <= 10', que resulta em valor lógico VERDADEIRO, por tanto o código é executado e o número 2 impresso. Agora incrementamos a variável 'count', que agora vale 3. E assim por diante, até imprimirmos o valor 10 e 'count' ser incrementada e se tornando count=11. No próximo teste, a condição agora é FALSA e o laço for termina. #include <stdio.h> int main(void) { int count; for(count=1 ; count <= 10 ; count++) { printf("%d\n", count); } }

Exemplo:


Contagem regressiva de 10 até 1, usando o laço FOR O raciocínio é igual ao do exemplo anterior, porém vamos decrementar a variável que vai se iniciar com 10. Veja como ficou nosso código em C: #include <stdio.h> int main(void) { int count; for(count=10 ; count >= 1 ; count--) printf("%d\n", count); } Assim como no teste condicional IF ELSE, e no laço WHILE, se o código que vem após o laço tem apenas uma linha, não é necessário usar as chaves. Se você colocar duas, ou mais, linhas de código após o IF, ELSE, WHILE ou FOR, apenas a primeira linha fará parte do teste/laço. Muita atenção pra isso! Se não quiser correr riscos, você pode usar sem problema algum o par de chaves.

Exemplo:


Contagem progressiva e regressiva no mesmo laço FOR Ora, se no laço WHILE podemos usar, inicializar, comparar, testar e operar matematicamente várias variáveis, também podemos fazer isso no laço FOR. Agora inicializamos duas variáveis, testamos se ambas obedecem a uma determinada condição, e usamos dois operadores matemáticos, tudo ao mesmo tempo. Veja esse código em C e tente entender como funciona: #include <stdio.h> int main(void) { int up, down; printf("CRESCENTE \tDECRESCENTE\n"); for(up=1, down=10 ; up<=10 && down >=1 ; up++, down--) { printf(" %d \t\t %d\n", up, down); } }

Exemplo:


Crie um programa em C que gera os elementos de uma P.A pedindo ao usuário o número de elementos da P.A, sua razão e seu elemento inicial. Lembrando que a fórmula do n-ésimo termo da P.A é: an = a1 + (n-1)*razao Fica fácil ver que: #include <stdio.h> int main(void) { int termos, razao, inicial, count; printf("Número de termos da P.A: "); scanf("%d", &termos); printf("Razão da P.A: "); scanf("%d", &razao); printf("Elemento inicial da P.A: "); scanf("%d", &inicial); for(count = 1; count <= termos ; count++) printf("Termo %d: %d\n", count, (inicial + (count-1)*razao) ); }

Exemplo:


Crie um programa em C que gera os elementos de uma P.G pedindo ao usuário o número de elementos da P.G, sua razão e seu elemento inicial. O exemplo dessa questão é igual ao que demos artigo sobre o laço WHILE. Porém, vamos apresentar agora o casting. A função pow, da biblioteca math.h recebe dois números decimais e retorna um decimal também, do tipo double. Porém, não queremos trabalhar com o tipo double, e sim com o tipo inteiro, então temos que dizer e sinalizar isso pra função pow, de alguma maneira. Essa maneira é o cast, que é colocar o tipo de variável que queremos obter, antes do retorno da função ou antes de uma variável. No nosso caso, queremos que a função pow() retorne um inteiro, então fizemos: (int) pow(...) Ou seja, basta colocarmos o tipo que queremos entre parênteses, e teremos esse tipo de variável. Mas só fizemos isso porque o resultado de nossa P.G é inteiro. Caso usássemos decimais e colocássemos o cast pra inteiro, iríamos ficar só com a parte inteira do número decimal e perderíamos os valores decimais. #include <stdio.h> #include <math.h> int main(void) { int termos, razao, inicial, elemento, count; printf("Número de termos da P.G: "); scanf("%d", &termos); printf("Razão da P.G: "); scanf("%d", &razao); printf("Elemento inicial da P.G: "); scanf("%d", &inicial); for(count = 1; count <= termos ; count++) printf("Termo %d: %d\n", count, inicial* (int)pow(razao,count-1) ); }