Linguagem C estruturas de repetição IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná
Até agora... Introdução à linguagem C Estrutura de um programa Escrita e execução do primeiro programa em C Declaração de variáveis Tipos de dados Operadores aritméticos, de comparação e lógicos Entrada e saída de dados Estruturas condicionais
Aula de hoje Estruturas de repetição em C
Comandos Conversão de algoritmos para linguagem C Algoritmo enquanto repita para Linguagem C while do while for Veremos também: Variáveis acumuladores Os comandos break e continue
Comando while Repete os comandos enquanto a condição for verdadeira. while (condição) comando; OU while (condição) { bloco de comandos; Lembre-se de que seu bloco de comandos deve em algum momento alterar o valor da condição, senão o while irá executar infinitamente (loop infinito).
Exemplo #include <stdio.h> int main() { int soma=0, val=0; while (val < 100) { printf( Digite um valor: ); scanf( %d, &val); soma += val; printf( A soma é: %d, soma); Por que usamos & antes da variável?
Comando do while Repete os comandos enquanto a condição for VERDADEIRA. do comando; while (condição); OU do { bloco de comandos; while (condição); Sempre executa a primeira vez.
Comando do while Repete os comandos enquanto a condição for VERDADEIRA. do comando; while (condição); OU do { bloco de comandos; while (condição); Um pouco diferente do repita até. Aqui continua a repetição enquanto a condição for verdadeira. Já no repita, continua a repetição enquanto a condição for falsa. Sempre executa a primeira vez.
Exemplo #include <stdio.h> int main() { int soma=0, val=0; do { printf( Digite um valor: ); scanf( %d, &val); soma += val; while (val < 100); printf( A soma é: %d, soma);
Exemplo... int cont, nro; cont = 1;... scanf( %d, &nro); do { printf( \n %d, cont); cont++; while (cont <= nro);... O que faz esse programa? O que acontece se o usuário digitar 0? O que acontece se usarmos while?
Comando for Repete os comandos utilizando uma variável de controle. for (início; condição; passo) comando; Ou for (início; condição; passo) { bloco de comandos; Início: uma ou mais atribuições, separadas por, Condição: repete enquanto a condição for verdadeira Passo: um ou mais comandos, separados por,
for (início; condição; passo) { comando(s); Sequência de execução Etapa 1: executa atribuições no início Etapa 2: testa a condição. Se for verdadeira vai para a etapa 3. Senão, encerra a repetição Etapa 3: 3.1: executa comando(s) 3.2: executa comando(s) no passo 3.3: volta para a Etapa 2
Exemplo #include <stdio.h> int main () { int cont; for (cont=1; cont<=100; cont++) { printf( \n %d, cont); E se eu quiser a lista de números ao contrário?
Exemplo #include <stdio.h> int main () { int cont; for (cont=100; cont>=1; cont--) { printf( \n %d, cont); E se eu quiser somente os pares?
Exemplo #include <stdio.h> int main () { int cont; for (cont=2; cont<=100; cont=cont+2) { printf( \n %d, cont);
Variáveis acumuladoras Útil para repetições em que o resultado de cada passo deve ser acumulado para chegar no resultado final. Por exemplo: Soma de n elementos informados pelo usuário Como n não é conhecido, não podemos criar uma variável para cada elemento.
Exemplo #include <stdio.h> int main () { int nro, soma, cont, elem; printf( informe o número de elementos ); scanf( %d, &nro); soma = 0; for (cont=1; cont<=nro; cont++) { printf( Digite o elemento ); scanf( %d, &elem); soma = soma + elem; printf( A soma é %d, soma);
Comando break O comando break faz com que uma repetição seja encerrada, passando a execução do programa para o próximo comando após o laço. Exemplo: int cont; for (cont=1; cont <=10; cont++) { if (cont >=5) break; printf( %d \n, cont); Qual o resultado da execução desse programa?
Comando continue O comando continue faz com que uma repetição vá para o final do laço. Exemplo: int cont; for (cont=1; cont <=10; cont++) { if (cont == 5 cont == 7 ) continue; printf( %d \n, cont); Qual o resultado da execução desse programa?
Atividades Faça um programa que imprime as n primeiras potências de 2. Ou seja 2 0, 2 1, 2 2,..., 2 n. Faça um programa que calcule n! Lembre-se que n! = n*(n-1)*(n-2)*(n-3)*... * 2*1