universidade federal de alagoas – ufal centro de tecnologia – ctec estruturas de controle...
TRANSCRIPT
Universidade Federal de Alagoas – UFAL
Centro de Tecnologia – CTEC
ESTRUTURAS DE CONTROLE
Estruturas de Repetição Estruturas de Repetição Indefinidas
Estruturas de Repetição
Considere o seguinte algoritmo para o cálculo da média bimestral de um aluno:
E se eu desejar calcular a média dos 25 alunos da turma? Uma solução é repetir o código acima 25 vezes; outra opção é rodar (executar) o programa acima 25 vezes.
2
%Exemplo:
P1 = input(‘Nota do trabalho: ’);P2 = input(‘Nota da prova: ’);Media = 0.3*P1 + 0.7*P2;disp(Media);
Estruturas de Repetição
No entanto, nem sempre essas soluções são viáveis.
A idéia, então, é usar o mesmo trecho do código acima sem a necessidade de reescrevê-lo. As estruturas usadas para implementar essa idéia são chamadas Estruturas de Repetição. Elas podem ser divididas em dois tipos básicos: Estruturas de Repetição Definidas Estruturas de Repetição Indefinidas Essas estruturas são apresentadas na seqüência.
3
Estruturas de Repetição Indefinidas
Estruturas de Repetição indefinidas são estruturas onde não se conhece, a priori, quantas repetições serão realizadas. Sua sintaxe é dada por:
4
while ( condição ) comando 1; comando 2; comando 3;end
Estruturas de Repetição Indefinidas Exercício 01: Identificar o múltiplo de 7 mais próximo de 500
sem superá-lo.
5
x = 0;while( x <= 500 ) x= x+7;enddisp(x-7);
Variável de
controle de
repetições
Atualização
Workspace
repetição
x
1 7
2 14
3 21
… …
72 504
Estruturas de Repetição Indefinidas
Exercício 02: Identificar se um número fornecido pelo usuário é primo.
6
x = input(‘Insira o número’);flag=0;m=2;while (( flag == 0 )&(m<x)) if (mod(x,m)==0) flag=1; end m=m+1;endif (flag==1) fprintf(‘%6i não é primo\n’, x);else fprintf(‘%6i é primo\n’, x);end
Variável-bandeira
Estruturas de Repetição Indefinidas
Uso do contador. Atenção para a definição do valor inicial e do incremento a
cada repetição! Exemplo 01: Identificar a menor quantidade de termos até
que a soma de múltiplos de 3 supere 500.
7
cont= 0;soma = 0;while ( soma <= 500 ) cont = cont+1; soma = soma + 3*cont;enddisp(cont);
ContadorElemento-
neutro
Acumulador
Estruturas de Repetição Indefinidas As estruturas de repetição indefinidas também podem ser
usadas em problemas com número de repetições conhecidas.
Exercício 02: Calcular a média anual de 10 alunos usando while.
8
soma = 0;cont = 1;
while( cont <= 10 ) m = input(‘Media: ’); soma = soma + m; cont = cont + 1;end
media = soma/(cont – 1);
disp(media);
Universidade Federal de Alagoas – UFAL
Centro de Tecnologia – CTEC
EXERCÍCIOS COMPLEMENTARES
Exercício 01: Imprensadinho
Mané escolhe um número entre 0 e 100. Sem ver qual foi o número, Zé tenta adivinhar o número
gerado. Zé não pode dizer o número que ele pensa que Mané
escreveu. Zé deve prender o número escolhido por Mané ao dizer seu antecessor e seu sucessor.
A cada tentativa, deve-se informar a Zé para chutar mais baixo ou mais alto ou se ele perdeu ou venceu.
Se Zé acertar o número, declarar que Mané venceu e mostrar o número de tentativas.
Se restar apenas uma opção para chute, declarar que Zé venceu por Mané ter ficado preso.
Informar o número escolhido por Mané quando o jogo tiver terminado.
10
11
clear, clcdisp ('Imprensadinho. Jogo para 2 jogadores, denominados Mané e Zé, onde Mané escolhe')disp (‘um número num intervalo conhecido e Zé não pode acertar o número. Zé tenta prender')disp('o número escolhido por Mané ao dizer o antecessor e o sucessor do número escolhido');teste = 0; soma = 0; Min = 0; Max = 100;segredo = input('Mané, escreva um número entre 0 e 100: '); clcwhile( teste == 0 ) fprintf ('Zé, os limites para chute são %i e %i\n', Min, Max); chute = input('Escolha um número no intervalo especificado: '); if ~((chute<Max)&(chute>Min)) fprintf('Chute direito, Zé!\n'); else soma = soma + 1; if( chute == segredo ), teste = 1; fprintf('Perdeu, Zé! Acertaste em cheio! Número de tentativas: %i\n', soma); elseif( (chute < segredo) ) if( (Max-chute) == 2 ), teste = 1; fprintf('Perdeu, Mané! Ficaste preso! Número de tentativas: %i\n', soma); else disp('Zé, chute mais alto'); Min = chute; end else if( (chute-Min) == 2 ), teste = 1; fprintf('Perdeu, Mané! Ficaste preso! Número de tentativas: %i\n', soma); else disp('Zé, chute mais baixo'); Max = chute; end end endendfprintf('O número escolhido por Mané foi %i\n',segredo);
Universidade Federal de Alagoas – UFAL
Centro de Tecnologia – CTEC
Desafios
Estruturas de Repetição Indefinidas Exercício 01: Programe o jogo da forca Exercício 02: Monte programa que converta número escrito
no sistema decimal para binário Exercício 03: Monte programa que converta número escrito
no sistema binário para decimal
13