Baixe o app para aproveitar ainda mais
Prévia do material em texto
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica COMPUTAÇÃO BÁSICA Estruturas de Repetição com teste no inicio Prof. Bruno Macchiavello (bruno@cic.unb.br) Universidade de Brasília – UnB Instituto de Ciências Exatas – IE Departamento de Ciência da Computação – CIC Prof. Bruno Macchiavello 1 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Objetivo • Estudar as estruturas de repetição: �Repetição com teste no início �Repetição com teste no final �Repetição com variável de controle Prof. Bruno Macchiavello 2 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Blocos de Repetição • As estruturas de repetição, chamadas comumente laços, possibilitam a execução automática de diferentes instruções repetidamente. �Exemplos não computacionais: – Enquanto tiver dinheiro na carteira vou continuar comprando – Vou bater pênaltis até fazer um gol – Vou assistir um filme três vezes Prof. Bruno Macchiavello 3 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Repetição com Teste no Inicio �Esta estrutura permite repetir um conjunto de ações enquanto uma determinada condição permanece válida. �As instruções são executadas enquanto o resultado de um teste lógico for VERDADEIRO. Prof. Bruno Macchiavello 4 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Prof. Bruno Macchiavello 5 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Repetição com Teste no Inicio • A expressão ENQUANTO em pseudo-código: Enquanto <condição> faça Prof. Bruno Macchiavello 6 Enquanto <condição> faça <conjunto de instruções> FimEnquanto Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Repetição com Teste no Inicio • Na linguagem ANSI C a estrutura ENQUANTO possui a seguinte sintaxe: Prof. Bruno Macchiavello 7 While (<condição>) { <conjunto de instruções>; } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 1: Desenvolver algoritmo para o seguinte problema: Ler o valor do raio de uma circunferência, e imprimir na tela a área dela, o programa deve verificar que o raio seja positivo, caso contrario deve pedir para o usuário ingressar novamente o valor. Algoritmo Area Variáveis raio, area: real Início Prof. Bruno Macchiavello 8 Início Escreva (“Informe o valor do raio:”) Leia (raio) Enquanto (raio < 0) faça Escreva (“Erro! O raio não pode ser negativo”) Escreva (“Informe o raio novamente: ”) Leia (raio) FimEnquanto area←3.14*raio^2 Escreva (“A area da circunferência é:”, area) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 1: Desenvolver algoritmo para o seguinte problema: Ler o valor do raio de uma circunferência, e imprimir na tela a área dela, o programa deve verificar que o raio seja positivo, caso contrario deve pedir para o usuário ingressar novamente o valor. Algoritmo Area Variáveis raio, area: real Início A variavél RAIO é a varaivél de controle do laço. Prof. Bruno Macchiavello 9 Início Escreva (“Informe o valor do raio:”) Leia (raio) Enquanto (raio < 0) faça Escreva (“Erro! O raio não pode ser negativo”) Escreva (“Informe o raio novamente: ”) Leia (raio) FimEnquanto area←3.14*raio^2 Escreva (“A area da circunferência é:”, area) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Variável de Controle • Normalmente as estruturas de repetição são controladas pelo valor de uma variável. Este variável é conhecida como variável de controle. • Sempre deve-se tomar cuidado de modificar o valor da variável de controle na estrutura ENQUANTO, para evitar o chamado LOOP INFINITO. Prof. Bruno Macchiavello 10 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 1: Desenvolver algoritmo para o seguinte problema: Ler a variável SEXO. Enquanto o valor fornecido não for correto (M,m,F,f) exibir mensagem de erro e solicitar novamente a leitura. Quando o valor fornecido estiver correto, ler a variável ANO. Escrever ANO e SEXO. Algoritmo Sexo Variáveis sexo : literal ano : inteiro Prof. Bruno Macchiavello 11 ano : inteiro Início Leia (sexo) Enquanto ((sexo ≠ f) E (sexo ≠ F) E (sexo ≠ m) E (sexo ≠ M)) faça Escreva (“Erro! ”) Escreva (“Informe o sexo novamente: ”) Leia (sexo) FimEnquanto Leia (ano) Escreva (ano, sexo) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 1: Desenvolver algoritmo para o seguinte problema: Ler a variável SEXO. Enquanto o valor fornecido não for correto (M,m,F,f) exibir mensagem de erro e solicitar novamente a leitura. Quando o valor fornecido estiver correto, ler a variável ANO. Escrever ANO e SEXO. Algoritmo Sexo Variáveis sexo : literal ano : inteiro Esta variável de controle deve ter um valor conhecido. Neste caso ela foi lida antes. Prof. Bruno Macchiavello 12 ano : inteiro Início Leia (sexo) Enquanto ((sexo ≠ f) E (sexo ≠ F) E (sexo ≠ m) E (sexo ≠ M)) faça Escreva (“Erro! ”) Escreva (“Informe o sexo novamente: ”) Leia (sexo) FimEnquanto Leia (ano) Escreva (ano, sexo) Fim Laço A variável de controle deve ter seu valor modificado dentro do “laço”. Neste caso a variável foi lida novamente caso ela foi lida antes. Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Programa em C do algoritmo anterior #include <stdio.h> int main () { int ano; char sexo; printf( “\nInforme o sexo: “); scanf(“%c”,&sexo); while((sexo != 'f') && (sexo != 'F') && (sexo!= 'm') && (sexo !='M')){ Prof. Bruno Macchiavello 13 while((sexo != 'f') && (sexo != 'F') && (sexo!= 'm') && (sexo !='M')){ printf( “\nErro! “); printf("\nInforme o sexo novamente: "); scanf(“%c”,&sexo); } printf( “\nInforme o ano: “); scanf(“%d”,&ano); printf(“\n%d - %c”, ano, sexo); return 0; } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Repetição com Teste no Inicio Exemplo 2: Calcular n!, sendo dado o valor de n - entrada: n (inteiro) - saída: n! = 1* 2 * ... * (n-2) * (n-1) * n Prof. Bruno Macchiavello 14 Algoritmo Fatorial passo 1. declaração de variáveis passo 2. leia n passo 3. calcule n! passo 4. escreva n! Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 2: Calcular n!, sendo dado o valor den - entrada: n (inteiro) - saída: n! = 1* 2 * ... * (n-2) * (n-1) * n Algoritmo Fatorial passo 1. declaração de variáveis passo 2. leia n passo 3. calcule n! passo 4. escreva n! passo 3. calcule n! Técnica de Refinamentos Sucessivos • passo 3: fat ← 1* 2 * ... * (n-2) * (n-1) * n Prof. Bruno Macchiavello 15 fat ← 1 fat ← fat * 2 fat ← fat * 3 repetição fat ← fat * 4 ... fat ← fat * n fat ← 1 i← 1 enquanto (i <= n) faça fat ← fat * i i← i + 1 FimEnquanto Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo Fatorial Exemplo 2: Calcular n!, sendo dado o valor de n - entrada: n (inteiro) - saída: n! = 1* 2 * ... * (n-2) * (n-1) * n Algoritmo Fatorial Variáveis numero, i, fat : inteiro Prof. Bruno Macchiavello 16 numero, i, fat : inteiro Início Escreva (“Informe um numero”) Leia (numero) fat←←←← 1 i←←←← 1 Enquanto (i <= numero) Faça fat←←←← fat * i i←←←← i + 1 FimEnquanto Escreva (“O fatorial de “, numero, “ é “, fat) Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo Fatorial (ANSI C) Programa em C do algoritmo anterior #include <stdio.h> int main () { int numero, i, fat; fat = 1; i = 1; Prof. Bruno Macchiavello 17 i = 1; printf( “\nDigite um numero: “); scanf(“%d”,&numero); while (i <= numero) { fat*=i; i++; } printf(“\nO Fatorial de %d e: %d”, numero, fat); return 0; } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo Fatorial • Teste de mesa do exemplo anterior TESTE DE MESA para o fatorial de 5 número i (i <= numero) fat saída 5 1 Sim 1 Prof. Bruno Macchiavello 18 5 2 Sim 2 5 3 Sim 6 5 4 Sim 24 5 5 Sim 120 5 6 Não O fatorial de 5 é 120 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Repetições encadeadas • Ao igual que as estruturas condicionais as estruturas de repetição podem ser encadeadas. • Exemplo: Calcular #include <stdio.h> int main(){ int sum, i, j; sum = 0; i=0; j=0; ∑ ∑ = = N i M j ji 0 0 * Prof. Bruno Macchiavello 19 sum = 0; i=0; j=0; while (i <= N) { while (j <= M) { sum = sum + (i * j); j = j + 1; } i = i + 1; } printf("The total sum is %d", sum); return(1); } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Comando Break (ANSI C) • O comando break que utilizei nos exemplo, INTERROMPE a execução de estruturas de repetição ou switch. Exemplo do Break #include <stdio.h> Prof. Bruno Macchiavello 20 #include <stdio.h> int main () { int i=0; while( i<25) { if(i==10) break; printf("%i\n",i); i++; } } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Comando Continue (ANSI C) • Somente pode ser utilizado dentro de uma estrutura de repetição (laço ou LOOP). Faz com que o resto dos comandos dentro do corpo do laço não sejam executados. Exemplo do Continue #include <stdio.h> Prof. Bruno Macchiavello 21 #include <stdio.h> int main () { int i=-1; while( i<100) { i++; if(i==50) continue; printf("%i\n",i); } } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo • Se em uma oficina especializada existem três serviços possíveis: trocar óleo, balancear pneus e lavar o carro. Cada um destes serviços custa 50, 30, 10 reais respectivamente. Elabore um algoritmo sempre mostre na tela o seguinte menu: 1 – Troca de óleo 2 – Balanceamento2 – Balanceamento 3 – Lavagem 4 – Total 5 - Sair Digite a opção: O usuário deve digitar uma das três opções “1”, “2” ou “3”, referentes aos serviços realizados quantas vezes for necessário, até ele digitar a opção “4”, a qual mostra o custo total dos serviços. Ao digitar a opção “5” o programa deve terminar. Prof. Bruno Macchiavello 22 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Algoritmo Oficina Variaveis a,opcao, res : inteiro INICIO a ← 1 //valor inicial da condição res ← 0 //valor inicial da resposta //escrever o menu escreva(“1 – Troca de óleo”) escreva(“2 – Balanceamento”) escreva(“3 – Lavagem”) escreva(“4 – Total”) escreva(“Digite o serviço realizado:”) //fim do menu Enquanto (a = 1) faça //o laço deve permanecer para sempre leia(opcao) Prof. Bruno Macchiavello 23 leia(opcao) Caso (opcao) igual 1 entao res ← res+50 //aumentar o preço em 50 igual 2 entao res ← res+30 //aumentar o preço em 30 igual 3 entao res ← res+10 //aumentar o preço em 10 igual 4 entao //dar o resultado e volver ao valor inicial escreva(“O valor total é:”,res) res ← 0 escreva(“Digite a opção:”) igual 5 entao a ← 0 senao escreva(“Opção invalida”) escreva(“Digite a opção:”) FimCaso FimEnquanto FIM Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exercícios 1. Faça um algoritmo que calcule e mostre a media de 10 notas, medias as quais estão entre 0 e 10. Garanta que as medias estejam nesta faixa. 2. Realizar um programa que verifique e mostre os números impares entre os números N e M inseridos pelo usuário. Prof. Bruno Macchiavello 24 2. Faça um algoritmo que leia um número N, calcule e mostre os N primeiros termos da seqüência de Fibonacci, onde o número seguinte e sempre formado pela soma dos dois números anteriores: 0, 1, 1, 2, 3, 5, 8, 13, .... O algoritmo deve verificar que o valor de N seja maior ou igual a 2, caso contrario deve dar uma mensagem de erro (“O número deve ser maior que 2”) e pedir o número novamente.
Compartilhar