Buscar

TP6 (1)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1TP6 Aplicacionais para Ciências e Engenharia
Aplicacionais para Ciências e 
Engenharia
Aula 6
2TP6 Aplicacionais para Ciências e Engenharia
Sumário
• Programação em Matlab
– Instruções condicionais (if e switch)
– Instruções repetitivas (for e while)
3TP6 Aplicacionais para Ciências e Engenharia
Instruções Condicionais
4TP6 Aplicacionais para Ciências e Engenharia
Instruções condicionais
– Instruções condicionais são comandos que permitem
controlar a execução do código Matlab, enquanto uma
expressão for verdadeira (caso do if) ou de forma implícita
no while
No Matlab temos as seguintes instruções condicionais:
 if
 switch
5TP6 Aplicacionais para Ciências e Engenharia
if
• if-end
Exemplo:
if expressao
% Esta parte (corpo do if) é executada se expressao for 
verdadeira
end
x=4;
if x>=0
y=sqrt(x);
end
disp(y)
2
clear
x=-4;
if x>0
y=sqrt(x);
end
disp(y)
Unrecognized function or variable 'y’.
% O corpo do if não é executado
6TP6 Aplicacionais para Ciências e Engenharia
if
• if-else-end
Exemplo:
x=4;
if x>=0
y=sqrt(x);
else
y=abs(x);
end
disp(y)
2
if expressao
% Esta parte é executada se expressao for verdadeira
else
% Esta parte é executada se expressao for falsa
end
x=-4;
if x>=0
y=sqrt(x);
else
y=abs(x);
end
disp(y)
2
7TP6 Aplicacionais para Ciências e Engenharia
if
• if-else-end
Podemos usar uma mensagem em caso de situação imprevista
if expressao
% Esta parte é executada se expressao for verdadeira
else
% Esta parte é executada se expressao for falsa
end
x=-2;
if x>=0
y=sqrt(x);
else
disp('Erro: O valor tem de ser >=0')
end
Erro: O valor tem de ser >=0
8TP6 Aplicacionais para Ciências e Engenharia
if (formato geral)
• if-elseif-else-end
Nota: o número de elseif pode ser qualquer e o else pode
ou não ser usado
if expressao1
% Esta parte é executada se expressao1 for verdadeira
elseif expressao2
% Esta parte é executada se expressao2 for verdadeira
% O elseif pode ser usado as vezes necessárias
else
% Esta parte é executada se expressao1 e expressao2 
forem falsas
end
9TP6 Aplicacionais para Ciências e Engenharia
if (formato geral)
• if-elseif-else-end
Exemplo:
x=input('Introduza um valor inteiro entre 1 e 10: ');
if rem(x,3)==0
disp('O número é múltiplo de 3')
elseif rem(x,5)==0
disp('O número é múltiplo de 5')
elseif rem(x,8)==0
disp('O número é múltiplo de 8')
else
disp('O número não é múltiplo de 3, 5 ou 8')
end
10TP6 Aplicacionais para Ciências e Engenharia
switch
• switch-case-otherwise-end
switch expressao
% expressao pode ser um valor numérico ou um array de caracteres
case expressao1
instrucoes1
case expressao2
instrucoes2
...
otherwise % Pode não ser usado
instrucoes
end
11TP6 Aplicacionais para Ciências e Engenharia
switch
Exemplo 1:
x=input('Introduza um valor inteiro entre 1 e 3: ');
switch x
case 1
fprintf('Introduziu o valor 1\n');
case 2
fprintf('Introduziu o valor 2\n');
case 3
fprintf('Introduziu o valor 3\n');
otherwise
fprintf('O valor não está compreendido entre 1 e 3\n');
end
Introduza um valor inteiro entre 1 e 3: 3
Introduziu o valor 3
Introduza um valor inteiro entre 1 e 3: 4
O valor não está compreendido entre 1 e 3
12TP6 Aplicacionais para Ciências e Engenharia
switch
Exemplo 2:
x = [10 20 40 30];
TipoGrafico='pie';
switch TipoGrafico
case 'bar'
bar(x)
title('Gráfico de barras')
case 'pie'
pie(x)
title('Gráfico tarte')
otherwise
warning('Gráfico não previsto.')
end
13TP6 Aplicacionais para Ciências e Engenharia
switch
É possível testar várias hipóteses num case. Para isso os valores / 
arrays de caracteres devem ser colocados dentro de {}
Exemplo3:
N=5
switch N
case {1, 3, 5, 7, 9}
disp('Impar entre 1 e 10')
case {2, 4, 6, 8}
disp('Par entre 1 e 10')
otherwise
disp('Não está entre 1 e 10');
end
N =
5
Impar entre 1 e 10
14TP6 Aplicacionais para Ciências e Engenharia
Instruções Repetitivas
15TP6 Aplicacionais para Ciências e Engenharia
Instruções repetitivas
– Instruções repetitivas são instruções que permitem
repetir tarefas um dado número de vezes ou enquanto
uma dada condição se mantiver
No Matlab temos as seguintes instruções repetitivas (ciclos):
 for
 while
16TP6 Aplicacionais para Ciências e Engenharia
for
• for-end
Utilizado quando se conhece o número de iterações
for variavel = valores
% valores pode ser um vetor criado com valores 
específicos ou definidos com o operador :
% A variavel é atualizada automaticamente
instrucoes
end
soma=0;
for i=1:3
soma=soma+i
end
soma =
1
soma =
3
soma =
6
for v=[1 5 8]
disp(v)
end
1
5
8
17TP6 Aplicacionais para Ciências e Engenharia
for
• Curiosidade relativamente ao ciclo for:
A redefinição de uma variável dentro do ciclo é possível sem 
que o resultado seja afetado
total = 0; 
for i = 1:10
disp(i)
total = total + 5*i
end
disp(total)
1
2
3
4
5
75
18TP6 Aplicacionais para Ciências e Engenharia
for
total = 0;
for i = 1:10
disp(i)
i=5*i;
disp(i)
total = total + i;
end
disp(total)
1
5
2
10
3
15
4
20
5
25
75
A variável de controlo i tem o mesmo nome da variável i 
no corpo do ciclo mas são independentes
19TP6 Aplicacionais para Ciências e Engenharia
Ciclos encadeados (nested loops)
• Os ciclos podem aparecer dentro de outros ciclos
Exemplo: 
Nota: Não funciona bem se as variáveis de controlo dos ciclos tiverem o mesmo nome
for i=1:5 % Gera a tabuada de i de 1 a 5
fprintf('Tabuada do %2d: ',i);
for j=1:10
fprintf('%2d ',i*j); % Imprime a tabuada i
end % % end ligado ao for mais próximo
fprintf('\n');
end
Tabuada do 1: 1 2 3 4 5 6 7 8 9 10 
Tabuada do 2: 2 4 6 8 10 12 14 16 18 20 
Tabuada do 3: 3 6 9 12 15 18 21 24 27 30 
Tabuada do 4: 4 8 12 16 20 24 28 32 36 40 
Tabuada do 5: 5 10 15 20 25 30 35 40 45 50 
20TP6 Aplicacionais para Ciências e Engenharia
while
• while-end
Utilizado quando não se conhece a priori o número de
iterações
while condicao
% Esta parte (corpo do ciclo) é executada se condicao
for verdadeira
% A variávlel da condicao é atualizada através de 
instruções
end
s=0; i=1;
while i<=10
s=s+i;
i=i+1;
end
disp(s)
55
disp(i)
11
21TP6 Aplicacionais para Ciências e Engenharia
break
• break é um comando que permite interromper o ciclo
no meio de seu corpo. Vejamos a sua utilização no
exemplo anterior:
s=0; i=1;
while (i > 0)
% Esta condição é sempre verdadeira. Pode ser 
substituída por while true
s=s+i;
i=i+1;
if (i > 10)
break;
end
end
disp([s i])
55 11
22TP6 Aplicacionais para Ciências e Engenharia
continue
• continue é um comando que permite interromper o
ciclo no meio de seu corpo e recomeçar do início
Vejamos a sua utilização no mesmo exemplo:
s=0; i=1;
while (i > 0)
s=s+i;
i=i+1;
if (i < 11)
continue;
end
break;
end
disp([s i])
55 11
Nota:
Os comandos break e continue também podem
ser utilizados dentro do ciclo for para interromper
ou redirecionar a execução do ciclo
23TP6 Aplicacionais para Ciências e Engenharia
Aplicação do for e while 
Problema: Determinar a soma de todos os valores da
sequência tais que
% Este problema pode ser facilmente resolvido 
de forma vetorial da seguinte forma:
k=1:10;
ak=k.^-k;
S=sum(ak(ak>=1e-5))
S =
1.2913
24TP6 Aplicacionais para Ciências e Engenharia
Aplicação do for e while
Usando o while (versão 1)
S=0; k=1;
while k<=10 & k^-k>=1e-5
S=S+k^-k;
k=k+1;
end
disp(S)
S =
1.2913
25TP6 Aplicacionais para Ciências e Engenharia
Aplicação do for e while
Usando o while (versão 2)
S=0; k=1;
while k<=10
a_k=k^-k;
if a_k<1e-5
break;
end
S=S+a_k;
k=k+1;
end
disp(S)
S =
1.2913
26TP6 Aplicacionais para Ciências e Engenharia
Aplicação do for e while
Usando o for
S=0;
for k=1:10
ak=k^-k;
if ak<1e-5
break;
end
S=S+ak;
end
disp(S)
S =
1.2913
27TP6 Aplicacionais para Ciências e Engenharia
Exercício: O valor de (número de Neper) pode ser obtido através da sériede
Taylor para ௫ calculada para , ou seja:
ஶ
௡ୀ଴
Pretende-se determinar o valor mínimo de para o qual o erro entre o valor de
do Matlab e o valor obtido pela sequência dada é menor do que ିଵ .
for e while encadeados
clear
erro=exp(1);N=0;
while erro>1E-14
e=0; 
for n=0:N
e=e+1/factorial(n);
% e é a aproximação de exp(1)
end
erro=abs(exp(1)-e);
N=N+1; 
end
N=N-1;
disp(N)
format long
disp([exp(1);e])
disp(erro)
15
2.718281828459046
2.718281828459043
2.664535259100376e-15

Outros materiais