Buscar

Programação em Scilab - Aula 7 - While e for

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 13 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 13 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 13 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

1 
Andréa Iabrudi 
andrea.iabrudi@iceb.ufop.br 
1 
Universidade	
  Federal	
  de	
  Ouro	
  Preto	
  -­‐	
  UFOP	
  	
  
Departamento	
  de	
  Computação	
  	
  -­‐	
  DECOM	
  
Programação	
  de	
  Computadores	
  I	
  –	
  BCC701	
  
www.decom.ufop.br/moodle	
  
}  Execução do comando while: 
1.  primeiro, a condição é avaliada 
2.  se a condição for verdadeira, então o bloco de comandos 
dentro do while é executado, e volta-se ao passo 1. 
3.  se a condição for falsa, o comando while termina, e a 
execução prossegue a partir do comando imediatamente 
subsequente ao comando while. 
while <condição> 
 <bloco while> 
end 
2 
3 
for i = <incio>:<incr>:<fim> 
 <bloco for> 
end 
O comando for é executado do seguinte modo: 
1.  o valor de <início> é atribuído à variável i 
2.  testa-se se i <= <fim> 
3.  se for, o <bloco for> é executado, a variável i é 
incrementada de <incr> e volta-se ao passo 2 
4.  se não for, o comando for termina 
}  O processo de decaimento de um material 
radioativo é regido pela seguinte equação 
 
 M(t) = M0 e-λt 
 
 onde 
 M(t) = quantidade do material no tempo t 
 M0 = quantidade inicial do material, em t=0 
 λ = constante de decaimento radioativo 
4 
3 
Faça um programa que imprima a tabela e o gráfico 
do decaimento radioativo do polonio210, em 
intervalos de 10 dias 
 
}  Exercício 1: Ao longo de 300 dias 
}  Exercício 2: até que a massa da amostra seja 1/2 
da massa original 
 
 Considere 
 M0 = 1kg (em t=0) 
 λ = 1/200 dias-1 
5 
6 
 Decaimento Polonio 210 
------------------------------- 
 Tempo (d) Massa (kg) 
 0 1.0000 
 10 1.0000 
 20 0.9512 
 … 
 130 0.5488 
 140 0.5220 
 150 0.4966 
 … 
 200 0.3867 
4 
// impressão cabeçalho da tabela 
// título e rótulos do gráfico 
k = 1/200; M = 1; 
for t=0:10:200 
 printf("%5.0f %5.4f\n",t,M) 
 plot(t,M,"+") 
 M = %e^(-k*t) 
end 
7 
8 
 Decaimento Polonio 210 
------------------------------- 
 Tempo (d) Massa (kg) 
 0 1.0000 
 10 1.0000 
 20 0.9512 
 30 0.9048 
 … 
 120 0.5769 
 130 0.5488 
 140 0.5220 
5 
// impressão cabeçalho da tabela 
// título e rótulos do gráfico 
k = 1/200; M = 1; t=0 
while M > 0.5 
 printf("%5.0f %5.4f\n",t,M) 
 plot(t,M,"+") 
 M = %e^(-k*t); t = t+10 
end 
 
9 
for i = 1:3 
 for j = 1:2 
 printf("i=%g, j=%g\n",i,j) 
 end 
end 
10 
O que é impresso pelo programa abaixo? 
i=1, j=1 
i=1, j=2 
i=2, j=1 
i=2, j=2 
i=3, j=1 
i=3, j=2 
6 
}  Obter a tabuada de multiplicação: 
 
 1 2 3 4 5 6 7 8 9 
 2 4 6 8 10 12 14 16 18 
 3 6 9 12 15 18 21 24 27 
 4 8 12 16 20 24 28 32 36 
 5 10 15 20 25 30 35 40 45 
 6 12 18 24 30 36 42 48 54 
 7 14 21 28 35 42 49 56 63 
 8 16 24 32 40 48 56 64 72 
 9 18 27 36 45 54 63 72 81 
// tabela de multiplicação 
for linha = 1:9	
  
 for coluna = 1:9	
  
 printf("%g",linha*coluna);	
  
 end	
  
end	
  
Corpo do loop externo: 
imprime uma linha 
Corpo do loop interno: imprime 
uma coluna de uma linha 
7 
}  Ao executar este programa verificamos 
entretanto que sua saída está ininteligível: 
12345678924681012141618369121518212... 
}  Esquecemos de: 
◦  Mudar de linha, com o \n, e 
◦  Dentro de cada linha, imprimir cada valor com um 
número fixo de colunas 
// Tabuada de multiplicação	
  
for linha = 1:9	
  
 for coluna = 1:9	
  
 printf("%3g",linha*coluna);	
  
 end	
  
 printf("\n");	
  
end	
  
Fora do loop 
interno! 
8 
}  Escreva um programa que leia um 
vetor e imprima os seguintes dados: 
◦  a média dos valores do vetor 
◦  os valores menores que a média 
◦  os valores maiores ou iguais à média 
15 
Maiores= e menores que média 
---------------------------- 
Digite um vetor de números: 
[2,5,8,1,12,30] 
Média = 9.66667 
Maiores ou iguais à média: 
 12. 30. 
Menores que a média: 
 2. 5. 8. 1. 
16 
9 
17 
v = input(“Digite um vetor: “) 
n = length(v) 
soma = 0 
for i=1:v 
 soma = soma + v(i) 
end 
média = soma / n 
18 
v = input(“Digite um vetor: “) 
// cálculo da média 
. . . 
maiores = [] 
menores = [] 
for i=1:v 
 if v(i) >= media then 
 maiores = [maiores v(i)] 
 else 
 menores = [menores v(i)] 
 end 
end 
10 
19 
v = input(“Digite um vetor: “) 
// cálculo da média 
media = mean(v) 
maiores = v(v >= media) 
menores = v(v < media) 
}  Problema: Dado um número inteiro positivo 
n, imprimir a sequência de todos os números 
primos menores ou iguais a n. 
}  Subproblema: Dado um número inteiro 
positivo k, determinar se k é primo. 
20 
11 
}  Definição: Um número k é primo se os 
únicos divisores de k são 1 e k. 
}  Uma solução mais geral para o problema, 
baseia-se em determinar todos os divisores 
de k, diferentes de 1 e k, armazenando esses 
valores em um vetor divisores. 
}  Então, testar se o número é primo seria 
equivalente a testar divisores == [] 
 21 
22 
// determina a lista de divisores de k 
// diferentes de 1 e k 
divisores = [] 
for i=2:int(k/2) 
 if modulo(k,i)==0 then 
 divisores = [divisores i] 
 end 
end 
12 
23 
// determina a lista de divisores de k 
// diferentes de 1 e k 
 . . . 
 
if divisores == [] then 
 // é primo 
else 
 // não é primo 
end 
 
24 
n = input(“Digite inteiro positivo: ”) 
primos = [] 
for k = 2:n 
 divisores = [] 
 for i=2:int(k/2) 
 if modulo(k,i)==0 then 
 divisores = [divisores i] 
 end 
 end 
 if divisores == [] then 
 primos = [primos k] // k é primo 
 end 
end 
disp(primos) 
13 
25 
n = input(“Digite inteiro positivo: ”) 
primos = [] 
for k = 2:n 
if eprimo(k) then 
 primos = [primos k] // k é primo 
 end 
end 
disp(primos) 
26 
}  A última solução é bem mais simples, né? 
 
}  No próximo módulo, você verá como 
podemos definir novas funções em Scilab. 
 
}  O uso de funções em programas torna o 
código mais simples, claro, modular e 
reusável.

Outros materiais