Buscar

Programação em Scilab - Aula 4 - Comando While

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 15 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 15 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 15 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 
1 
Universidade	
  Federal	
  de	
  Ouro	
  Preto	
  -­‐	
  UFOP	
  	
  
Departamento	
  de	
  Computação	
  	
  -­‐	
  DECOM	
  
Programação	
  de	
  Computadores	
  I	
  –	
  BCC701	
  
www.decom.ufop.br/moodle	
  
}  O pH de uma solução aquosa é medido por sua 
acidez. A escala do pH varia entre 0 e 14, inclusive. 
Uma solução como pH igual a 7 é dita neutra; uma 
solução com o pH maior que 7 é dita básica; e uma 
solução com o pH menor que 7 é dita ácida. 
Escreva um programa que leia o pH de uma solução 
e imprima se a solução é neutra, básica ou ácida. O 
programa deve testar se o valor fornecido como 
entrada é um valor válido, isto é, se está no 
intervalo fechado [0,14]. 
2 
2 
3 
4 
Se o usuário errar ao digitar o valor do PH, ele não terá 
chance de corrigir seu erro, fornecendo um novo valor 
Queremos modificar o programa de modo que, se o 
valor fornecido não for válido, o usuário possa digitar 
novamente um valor, até que digite um valor válido. 
3 
}  Vamos precisar de um comando de 
repetição 
}  A digitação de um novo valor deve ser 
solicitada, enquanto o valor digitado 
anteriormente não for válido. 
5 
ph = input(“Informe o PH da solução: ”) 
while ph<0 | ph>14 
 printf(“pH inválido: deve ser de 0 a 14”) 
 ph = input(“Informe o PH da solução: ”) 
end 
6 
4 
}  Execução do comando while: 
1.  primeiro, a condição é avaliada 
2.  se a condição for verdadeira, 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. 
UFMG DCC001 2013-1 
while <condição> 
 <bloco while> 
end 
8 
5 
9 
Que valores são impressos pelo seguinte trecho 
de programa? 
 
 
 
 
 
 
 
x = 1 
while x < 5 
 printf('x = %g',x) 
 x = x + 1 
end 
x = 1 
x = 2 
x = 3 
x = 4 
6 
Quando este loop irá parar? 
 
 
 
 
 
 
 
 
Sem intervenção, nunca. 
Cuidado com o uso de while! 
x = 1 
while x < 10 
 printf('x = %g',x) 
 x = x - 1 
end 
}  Sequência de Fibonacci: 
 0 1 1 2 3 5 8 13 21 34 55 … 
}  A partir do terceiro número da sequência, 
cada número é obtido como a soma dos 
dois números anteriores. 
}  Faça um programa que leia um número 
positivo n e imprima todos os números da 
sequência de Fibonacci que são menores 
do que n 
7 
}  Temos que ler o valor de n e calcular e 
imprimir, repetidamente, um novo número da 
sequência de Fibonaci, enquanto esse número 
calculado for menor do que n. 
}  Precisamos de uma variável (fibC) para 
armazenar o número corrente da sequência. 
}  Precisamos também de uma variável (fibP) 
para armazenar o próximo número da 
sequência, pois cada valor da é calculado 
como a soma dos dois anteriores 
}  Os valores iniciais de fibC e fibP devem ser 0 e 1 
}  A impressão e cálculo de novos valores é feita 
dentro de um comando de repetição: 
◦  A condição de teste verifica se o número de 
Fibonacci corrente (fibC) é menor do que n 
◦  No corpo do comando de repetição, devemos 
imprimir o número de Fibonacci corrente (fibC) 
e calcular novamente os dois próximos números 
da sequência, isto é, modificar os valores de 
fibC e fibP. 
8 
UFMG DCC001 2013-1 
n = input(“Valor limite: "); 
fibC = 0; fibP = 1; 
printf(“Nos. de Fibonacci < %g:\n”,n) 
while fibC < n 
 printf(” %g”,fibC) 
 next = fibC + fibP 
 fibC = fibP 
 fibP = next 
end 
9 
}  Uma maneira natural de armazenar os valores da 
sequência de Fibonacci é utilizando um vetor 
 --> v = [] 
 v = 
 [] 
--> v = [v 3] 
 v = 
 3. 
--> v = [2+5 v] 
 v = 
 7. 3. 
cria a variável v e 
atribui a ela um 
vetor vazio 
“estende” o vetor v, 
acrescentando um novo 
valor no final do vetor 
“estende” o vetor v, 
acrescentando um novo 
valor no início do vetor 
UFMG DCC001 2013-1 
n = input(“Valor limite: "); 
fibC = 0; fibP = 1; 
fibs = [] 
while fibC < n 
 fibs = [fibs fibC] 
 next = fibC + fibP 
 fibC = fibP; fibP = next 
end 
printf(“Nos. de Fibonacci < %g:”,n) 
disp(fibs) 
10 
UFMG DCC001 2013-1 
}  A versão 2 é preferível em relação à 1: 
◦  separa mais claramente a parte do programa que 
efetua o cálculo da parte que exibe resultados. 
}  A função disp pode ser usada para 
imprimir um vetor. Mais adiante, veremos 
como podemos imprimir um vetor usando 
printf, especificando um formato para 
impressão dos seus elementos 
}  MDC(a,b) onde a e b são inteiros 
◦  MDC(a,b) é o maior inteiro g que divide a e b 
◦  Isto é, a = g.m e b=g.n, onde m,n são inteiros, 
e, para todo inteiro c que divide a e b, temos 
que c divide g 
◦  Exemplo: MDC(21,12) = 3 
◦  Se MDC(n,m) = 1, m e n são ditos primos entre 
si. Ex: MDC(9,5) = 1 
11 
}  Algoritmo de Euclides: 
◦  criado em 300 A.C., e em uso até hoje! 
}  Idéia: 
◦  mdc(a,a) = a 
◦  se a > b, mdc(a,b) = mdc(a-b,b) 
◦  se b > a, mdc(a,b) = mdc(a, b-a) 
}  Método: 
◦  se a = b, o mdc(a,b) é igual a a (ou a b) 
◦  senão, substituir o maior pela diferença entre o 
maior e o menor e repetir o processo, até que os 
dois valores sejam iguais (isto é, até que a=b) 
252 105 
252-105=147 105 
147-105=42 105 
42 105-42=63 
42 63-42=21 
42-21=21 21 
12 
m 56
n 12
a 56 44 32 20 8 8 4
b 12 12 12 12 12 4 4
- - - - - - 
Em cada passo, o maior 
entre a e b é substituído 
pela diferença entre a e b 
Valores iniciais colocados 
na preparação do loop 
O loop termina 
quando a = b 
m 56
n 12
a 56 44 32 20 8 8 4
b 12 12 12 12 12 4 4
- - - - - - 
Em cada passo, o maior 
entre a e b é substituído 
pela diferença entre a e b 
Valores iniciais colocados 
na preparação do loop 
O loop termina 
quando a = b 
13 
}  Método: 
◦  se a = b, o mdc(a,b) é igual a a (ou a b) 
◦  senão, substituir o maior pela diferença entre o 
maior e o menor e repetir o processo, até que os 
dois valores sejam iguais (isto é, até que a=b) 
 
 
UFMG DCC001 2013-1 
while <condição> 
 <bloco while> 
end 
a e b devem ser 
inicializados antes 
do loop 
Qual deve ser a 
condição? 
Como deve ser o 
corpo do loop? 
UFMG DCC001 2013-1 
m = input("m = "); n = input("n = "); 
a = m; b = n; 
while a <> b 
 if a > b then 
 a = a-b; 
 else 
 b = b-a; 
 end 
end 
printf("mdc(%g,%g) = %g",m,n,a) 
14 
44 12 
44-12=32 12 
32-12=20 12 
20-12=8 12 
8 12-8=4 
8-4=4 4 
4 4 
Subtrações 
sucessivas 
podem ser 
feitas por 
divisão 
UFMG DCC001 2013-1 
m = input("m = "); n = input("n = "); 
a = m; b = n; 
while b <> 0 
 aux = b 
 b = modulo(a,b); 
 a = aux; 
end 
printf("mdc(%g,%g) = %g",m,n,a) 
Porque não é necessário 
determinar qual, a ou b, 
é maior? 
15 
44 12 
12 44 mod 12 = 8 
8 12 mod 8 = 4 
4 8 mod 4 = 0

Outros materiais