Problema
Você acabou de desenvolver um programa para calcular a média de um aluno e verificar se ele foi aprovado ou não, certo? Ok. E se você precisasse calcular a média de vários alunos de uma sala?
Bom, você pode rodar novamente o programa clicando em RUN, mas ficar clicando no botão toda hora não parece uma solução muito prática. Deve ter algum jeito mais prático de mandar o programa repetir as operações que ele já fez.
Laços de Repetição
No curso de algoritmos vimos que a solução para esse problema que eu te apresentei é usar uma estrutura de controle de fluxo de dados conhecida como Laço. Também vimos nesse curso dois tipos de laços diferentes: Um com número de repetições indeterminado e outro onde o número de repetições é previamente determinado.
Se o que distingui esses diferentes tipos de laço é o número de repetições, então provavelmente eu vou ter algum mecanismo para contar as repetições e vimos em algoritmos que esse mecanismo é feito por uma variável que trabalha como um contador.
Relembrou? Tendo relembrado esses conceitos, vamos ver as diferenças e semelhanças do Portugol com a linguagem C para facilitar o seu aprendizado.
Do Portugol para a Linguagem C
No Portugol vimos que para fazer laços temos os comandos enquanto() e o para(). Em linguagem C temos comandos fazem a mesma coisa só que os nomes são a tradução para o inglês, portanto temos o while() e o for().
Se no Portugol as estruturas desses comandos eram:
}
Na Linguagem C teremos:
}
Você viu que o para() e o for() apresentam na sua estrutura a presença de uma variável contador. No entanto o enquanto() e o while() também podem ser adaptados para essa situação usando esse artifício:
Laços com número de repetições determinado
Digamos que eu queira fazer um programa na Linguagem C para contar até dez. Não vale escrever uma linha com um printf("1 2 3 4 5 6 7 8 9 10"); e se você pensou em escrever dez linhas também está indo pelo caminho errado.
Esse problema é um bom exemplo para mostrar o laço com número de repetições determinado porque eu vou precisar repetir as mesmas operações por dez vezes, ou seja, já está determinado quantas repetições ocorreram.
Como eu resolvo isso? Eu vou refrescar sua memória mostrando como seria em Portugol essa contagem:
Eu posso, por exemplo, fazer ele com um enquanto():
- programa {
- funcao inicio (){
- inteiro contador=1
- enquanto (contador<=10){
- escreva(contador)
- contador++
- }
- }
- }
Vamos relembrar o que temos aqui. Na linha 3 você tem a declaração de uma variável do tipo inteiro chamada contador e atribui a ela o valor inicial 1. Nas linhas seguintes você disse ao Portugol:
escreva o valor dele na tela e depois acrescente +1 ao valor dele"
Agora ficou fácil resolver isso em C:
- #include <stdio.h>
- int main(){
- int contador=1;
- while (contador<=10){
- printf("%d",contador);
- contador++;
- }
- return 0;
- }
Veja que aqui eu também declarei a variável e usei a mesma condição para o while(). As diferenças ficam apenas na sintaxe do C que exige o especificador de formato e o uso do ; no final de cada instrução.
Lembrando que contador++ é um exemplo do uso do operador de incremento, o que equivale a fórmula contador=contador+1, ou seja, eu estou somando 1 ao valor anterior do contador.
Apesar do while() ser capaz de resolver o meu problema em laços de repetição onde o número de repetições é determinado a boa prática de programação sugere o uso do for() que foi especialmente feito para essas situações.
Alguns estudantes acham o enquanto() e o while() mais fácil de entender porque ele pode ser descrito em uma frase falada muito próxima do nosso raciocínio enquanto o para() e o for() exige uma certa adaptação, mas quanto mais cedo você se adaptar a eles, mas cedo você compreenderá a maioria do códigos de exemplo que encontramos pela internet.
Então vamos ao nosso programa de contagem, agora feito com para() e com for():
No Portugol teríamos isso...
- programa {
- funcao inicio() {
- inteiro contador
- para (contador = 1; contador <= 10; contador++) {
- escreva (contador)
- }
- }
- }
... que em linguagem C ficaria assim:
- #include <stdio.h>
- int main(){
- int contador;
- for (contador=1;contador<=10;contador++){
- printf("%d",contador);
- }
- return 0;
- }
Mais uma vez a lógica de programação é a mesma do Portugol para a Linguagem C, mudando apenas a sintaxe e algumas necessidades a mais como o arquivo de cabeçalho.
No entanto eu ainda não resolvi o problema inicial do programa de cálculo de média, mas vou resolvê-lo na próxima aula. Prometo.
Referências
DAMAS, L. Linguagem C. Rio de Janeiro: LTC Editora, 2007.
GBD ONLINE. C for Beginners. Disponível em: <https://learn.onlinegdb.com/c_for_beginners> Acesso em 05 ago. 2024.
GBD ONLINE. C Programming Examples Disponível em: <https://learn.onlinegdb.com/c_program_examples> Acesso em 05 ago. 2024.
W3SCHOOLS. C Tutorial. Disponível em: <https://www.w3schools.com/c/index.php> Acesso em 05 ago. 2024.