Estruturas de repetição
em C
Yuri Tavares dos Passos
Repetição
● Assim como foi visto na primeira unidade,
quando o mesmo comando precisa ser
executado várias vezes até que atinja uma
certa condição ou um número certo de
repetições, o melhor é usar as estruturas de
repetição.
● Comandos que devem ser executadas milhares
ou milhões de vezes são mais facilmente
implementados utilizando estas estruturas.
Repetição
● Estas estruturas são bem simples e
podem economizar várias linhas de
código.
● Em C temos três comandos de repetição:
– while
– for
– do … while
Repetição
● while
– Equivalente ao enquanto.
● for
– Equivalente ao para.
● do … while
– Equivalente ao repita.
While
● Tradução para inglês de enquanto.
● O funcionamento é o mesmo do comando
enquanto.
● A sintaxe é:
– while (<expressão lógica>)
<comando>
– while (<expressão lógica>){
<comandos>
}
While
● Se <expressão lógica> retorna verdadeiro,
o comando ou bloco de comandos será
executado.
● Quando <expressão lógica> é falso, a
execução prossegue após o comando
while.
While
● O que faz o programa abaixo?
While
While
● E este?
While
For
● Tradução para o inglês da palavra para.
● O funcionamento é o mesmo para o comando
homônimo.
● A sintaxe é:
– for (<inicialização>;<expressão lógica>;<incremento>)
<comando>
– for (<inicialização>;<expressão lógica>;<incremento>){
<comandos>
}
For
● O comando <inicialização> será executado
somente no início do comando for.
● O comando for repete seu <comando> ou
bloco de <comandos> até a <expressão
lógica> se tornar falsa.
● Após executado cada <comando> ou
bloco de <comandos>, o for executa a
expressão em <incremento>.
For
For
- A função sin() pertence ao módulo math.h. Pesquise sobre
outras funções da biblioteca math.
- Caso esteja compilando em linha de comando, adicione a
opção -lm no gcc. Ela permite o uso das funções da libm,
responsável pelo módulo math.h.
For
For
● O comando for é equivalente a utilizar o
comando while para a <expressão lógica>,
antecedido pelos comandos da
<inicialização>. Como último comando do
laço, isto é, dentro do while após o
<comando> ou blocos de <comandos>,
executa-se <incremento>
For
● Ou seja, o mesmo que:
<inicialização>
while (<expressão lógica>){
<comandos>
<incremento>
}
● Vários comandos podem ser usados dentro
de <inicialização> e <incremento>.
Contudo, deve-se separá-los por vírgulas.
For
Do … while
● Significa faça … enquanto.
● Possui um comportamento semelhante ao do repita.
Contudo, a repetição é feita quando a condição é
verdadeira.
● Sintaxe:
– do
<comando>
while(<expressão lógica>);
– do{
<comandos>
} while(<expressão lógica>);
Do … while
● Se a <expressão lógica> for falsa, o laço
termina e o(s) <comando(s)> não é(são)
repetido(s).
● A repetição ocorre somente quando o
resultado da <expressão lógica> for
verdadeira.
● É usado quando se deseja que no mínimo uma
vez o(s) <comando(s)> do laço se repita(m).
Do … while
Do … while
Break
● O comando break é utilizado quando se
deseja encerrar a repetição.
● Assim, o código continua a sua execução
logo após o comando de repetição onde o
break está contido.
● Ele já foi mencionado no comando switch.
Break
Break
● Usá-lo fora de um comando de repetição
ou de um switch ocasiona um erro.
Exemplo:
Continue
● O comando continue deve ser usado
somente em repetições.
● Ao utilizar este comando, a execução
retorna ao início do laço sem executar os
comandos seguintes.
Continue
Continue
Exercícios
1) Faça um programa em C que mostre a tabuada da
soma, subtração, multiplicação e da divisão do número
escolhido pelo usuário. Utilize a estrutura do for.
Responda também esta questão utilizando o comando
while.
2) Faça um programa em C para:
– Ler N números inteiros;
– Imprimir somente os números pares:
– Sair do laço quando o número “10” for lido.
Utilizar a estrutura while e o comando break.
Exercícios
3) Faça um programa em C para imprimir uma
tabela de conversão entre dólar e real. A cotação
de um dólar em real deve ser fornecida pelo
usuário. A tabela deve conter até 1.000 dólares.
4) Suponha que serão digitados 100 números
inteiros. Faça um programa para:
– Somar os números positivos.
– Contar os números negativos.
– Calcular a média dos números positivos.
Exercícios
5) Uma empresa oferece para seus clientes um
determinado desconto de acordo com o valor da
compra efetuada. O desconto é 20% se o valor da
compra for maior ou igual a 500 reais, e 15% se
for menor. Faça um programa para:
– Ler o valor de compra de N clientes, até que o valor “0”
seja digitado.
– Calcular e imprimir o valor da compra de cada cliente,
já com o desconto.
– Imprimir o total recebido pela empresa
Exercícios
6) Imagine que o governo quer conceder uma ajuda financeira a
crianças, jovens, adultos e idosos. O valor do benefício deve ser
calculado segundo a seguinte fórmula:
benefício = (minimo * idade ) / 100,
onde mínimo é o valor do salário mínimo e idade é a idade da
pessoa a receber o benefício.
Faça um programa em C para ler o nome e a idade de um conjunto
de pessoas. Adote: Criança: de 0 a 10 anos; Jovem: de 11 a 20
anos; Adulto: de 21 a 59 anos; Idoso: acima de 60 anos
– Imprima a soma dos benefícios dos adultos
– Imprima a quantidade de idosos beneficiados
– Imprima o valor do maior benefício recebido por um jovem
– Imprima a idade da criança com benefício de menor valor
Exercícios
7) O Departamento de transito do estado anotou dados de
acidentes de transito no ultimo ano. Para cada motorista
envolvido no acidente, tem-se as seguintes informações:
Ano de nascimento;
Sexo (M - Masculino, F – Feminino)
Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado);
Faça um programa em C que:
– Calcule a porcentagem de motoristas com menos de 21 anos;
– Calcule quantas mulheres são da capital;
– Calcule quantos motoristas do interior do estado tem idade maior que
60 anos;
– Verifique se existe alguma mulher com idade maior que 60 anos;
Exercícios
8) Faça um programa que escreva na tela
os 32 primeiros números inteiros que são
potência de 2 utilizando apenas
operadores binários e o comando for.

Aula03 repeticao

  • 1.
    Estruturas de repetição emC Yuri Tavares dos Passos
  • 2.
    Repetição ● Assim comofoi visto na primeira unidade, quando o mesmo comando precisa ser executado várias vezes até que atinja uma certa condição ou um número certo de repetições, o melhor é usar as estruturas de repetição. ● Comandos que devem ser executadas milhares ou milhões de vezes são mais facilmente implementados utilizando estas estruturas.
  • 3.
    Repetição ● Estas estruturassão bem simples e podem economizar várias linhas de código. ● Em C temos três comandos de repetição: – while – for – do … while
  • 4.
    Repetição ● while – Equivalenteao enquanto. ● for – Equivalente ao para. ● do … while – Equivalente ao repita.
  • 5.
    While ● Tradução parainglês de enquanto. ● O funcionamento é o mesmo do comando enquanto. ● A sintaxe é: – while (<expressão lógica>) <comando> – while (<expressão lógica>){ <comandos> }
  • 6.
    While ● Se <expressãológica> retorna verdadeiro, o comando ou bloco de comandos será executado. ● Quando <expressão lógica> é falso, a execução prossegue após o comando while.
  • 7.
    While ● O quefaz o programa abaixo?
  • 8.
  • 9.
  • 10.
  • 11.
    For ● Tradução parao inglês da palavra para. ● O funcionamento é o mesmo para o comando homônimo. ● A sintaxe é: – for (<inicialização>;<expressão lógica>;<incremento>) <comando> – for (<inicialização>;<expressão lógica>;<incremento>){ <comandos> }
  • 12.
    For ● O comando<inicialização> será executado somente no início do comando for. ● O comando for repete seu <comando> ou bloco de <comandos> até a <expressão lógica> se tornar falsa. ● Após executado cada <comando> ou bloco de <comandos>, o for executa a expressão em <incremento>.
  • 13.
  • 14.
    For - A funçãosin() pertence ao módulo math.h. Pesquise sobre outras funções da biblioteca math. - Caso esteja compilando em linha de comando, adicione a opção -lm no gcc. Ela permite o uso das funções da libm, responsável pelo módulo math.h.
  • 15.
  • 16.
    For ● O comandofor é equivalente a utilizar o comando while para a <expressão lógica>, antecedido pelos comandos da <inicialização>. Como último comando do laço, isto é, dentro do while após o <comando> ou blocos de <comandos>, executa-se <incremento>
  • 17.
    For ● Ou seja,o mesmo que: <inicialização> while (<expressão lógica>){ <comandos> <incremento> } ● Vários comandos podem ser usados dentro de <inicialização> e <incremento>. Contudo, deve-se separá-los por vírgulas.
  • 18.
  • 19.
    Do … while ●Significa faça … enquanto. ● Possui um comportamento semelhante ao do repita. Contudo, a repetição é feita quando a condição é verdadeira. ● Sintaxe: – do <comando> while(<expressão lógica>); – do{ <comandos> } while(<expressão lógica>);
  • 20.
    Do … while ●Se a <expressão lógica> for falsa, o laço termina e o(s) <comando(s)> não é(são) repetido(s). ● A repetição ocorre somente quando o resultado da <expressão lógica> for verdadeira. ● É usado quando se deseja que no mínimo uma vez o(s) <comando(s)> do laço se repita(m).
  • 21.
  • 22.
  • 23.
    Break ● O comandobreak é utilizado quando se deseja encerrar a repetição. ● Assim, o código continua a sua execução logo após o comando de repetição onde o break está contido. ● Ele já foi mencionado no comando switch.
  • 24.
  • 25.
    Break ● Usá-lo forade um comando de repetição ou de um switch ocasiona um erro. Exemplo:
  • 26.
    Continue ● O comandocontinue deve ser usado somente em repetições. ● Ao utilizar este comando, a execução retorna ao início do laço sem executar os comandos seguintes.
  • 27.
  • 28.
  • 29.
    Exercícios 1) Faça umprograma em C que mostre a tabuada da soma, subtração, multiplicação e da divisão do número escolhido pelo usuário. Utilize a estrutura do for. Responda também esta questão utilizando o comando while. 2) Faça um programa em C para: – Ler N números inteiros; – Imprimir somente os números pares: – Sair do laço quando o número “10” for lido. Utilizar a estrutura while e o comando break.
  • 30.
    Exercícios 3) Faça umprograma em C para imprimir uma tabela de conversão entre dólar e real. A cotação de um dólar em real deve ser fornecida pelo usuário. A tabela deve conter até 1.000 dólares. 4) Suponha que serão digitados 100 números inteiros. Faça um programa para: – Somar os números positivos. – Contar os números negativos. – Calcular a média dos números positivos.
  • 31.
    Exercícios 5) Uma empresaoferece para seus clientes um determinado desconto de acordo com o valor da compra efetuada. O desconto é 20% se o valor da compra for maior ou igual a 500 reais, e 15% se for menor. Faça um programa para: – Ler o valor de compra de N clientes, até que o valor “0” seja digitado. – Calcular e imprimir o valor da compra de cada cliente, já com o desconto. – Imprimir o total recebido pela empresa
  • 32.
    Exercícios 6) Imagine queo governo quer conceder uma ajuda financeira a crianças, jovens, adultos e idosos. O valor do benefício deve ser calculado segundo a seguinte fórmula: benefício = (minimo * idade ) / 100, onde mínimo é o valor do salário mínimo e idade é a idade da pessoa a receber o benefício. Faça um programa em C para ler o nome e a idade de um conjunto de pessoas. Adote: Criança: de 0 a 10 anos; Jovem: de 11 a 20 anos; Adulto: de 21 a 59 anos; Idoso: acima de 60 anos – Imprima a soma dos benefícios dos adultos – Imprima a quantidade de idosos beneficiados – Imprima o valor do maior benefício recebido por um jovem – Imprima a idade da criança com benefício de menor valor
  • 33.
    Exercícios 7) O Departamentode transito do estado anotou dados de acidentes de transito no ultimo ano. Para cada motorista envolvido no acidente, tem-se as seguintes informações: Ano de nascimento; Sexo (M - Masculino, F – Feminino) Procedência ( 0 - Capital, 1 - Interior, 2 - Outro estado); Faça um programa em C que: – Calcule a porcentagem de motoristas com menos de 21 anos; – Calcule quantas mulheres são da capital; – Calcule quantos motoristas do interior do estado tem idade maior que 60 anos; – Verifique se existe alguma mulher com idade maior que 60 anos;
  • 34.
    Exercícios 8) Faça umprograma que escreva na tela os 32 primeiros números inteiros que são potência de 2 utilizando apenas operadores binários e o comando for.