universidade federal de alagoas – ufal centro de tecnologia – ctec estruturas de controle...

Post on 18-Apr-2015

102 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related