Universidade Federal de Ouro Preto - UFOP
Departamento de Computação - DECOM
Programação de Computadores I – BCC701
www.decom.ufop.br/moodle
Andréa Iabrudi
[email protected]
1

O valor de ex, onde x é um número real, pode
ser calculado pela seguinte série de Taylor:
e = 1+
x

x
1!
+
x
2
2!
+
x
3
3!
+
=å
¥
i=0
x
i
i!
Um valor aproximado para ex pode ser obtido
se utilizarmos um número finito de termos
no somatório acima.
2
Escreva um programa que leia o um
número real x e calcule um valor
aproximado para ex, com um número
de termos n, também fornecido como
entrada para o programa.
 Como deve ser feito esse cálculo?
 Você usaria um for ou um while?

3

Dados x e n, queremos é calcular
e =å
x
n
i=0
x
i
i!
Como deve ser feito esse cálculo?
 Você usaria um for ou um while?

4
Exemplos de execução:
Qual é o valor de x? .5
Qual o número de termos? 1
ex = 1.

Qual é o valor de x? .5
Qual o número de termos? 2
ex = 1.5
Qual é o valor de x? .5
Qual o número de termos? 3
ex = 1.625
5
// Cálculo de ex
x = input(”Qual é o valor de x? ")
n = input(”Qual o número de termos? ")
soma = 1;
num = x; den = 1;
for i=2:n
soma = soma + num/den
num = num * x
den = den * i
end
printf(”ex = %g”,soma)
6

Note que a diferença entre os valores
calculados dimunui, à medida que
aumentamos o número de termos do
sometório, e o valor calculado aproxima-se
do valor de ex
n
e0.5
sn – sn-1
2
3
4
1.5
1.625
1.64583
0.125
0.02083
7

Escreva um programa que leia o um
número real x e calcule um valor para
ex, com erro de aproximação inferior a
um valor dado como entrada.
Como deve ser feito esse cálculo?
 Você usaria um for ou um while?

8
Exemplo de execução:
Qual é o valor de x? .5
Qual erro de aproximação? 0.01
ex = 1.64844
no. de termos = 5
Qual é o valor de x? .5
Qual erro de aproximação? .00000001
ex = 1.64872
no. de termos = 10
9
// Cálculo de ex
x = input(”Qual é o valor de x? ")
err = input(”Qual erro de aproximação? ")
sn = 1; snAnt = %inf;
i = 1; num = x; den = 1;
while sAnt – sn >= err
soma = soma + num/den
i = i+1
num = num * x
den = den * i
end
printf(”ex = %g”,soma)
10

Suponha que queremos escrever um programa
para determinar quantas vezes um dado valor n
ocorre em um vetor v.

Considere os dois seguintes casos:

Como você implementaria o programa em cada
caso?
◦ O vetor v não está ordenado
v = [2 8 4 3 2 3 3 8 3 5 1 4 5 9 2 7 2 3 5 1 8 1 9]
◦ O vetor v está ordenado (em ordem descendente)
v = [9 9 8 8 8 7 5 5 5 4 4 3 3 3 3 3 2 2 2 2 1 1 1]
11
v = [2 8 4 3 2 3 3 8 3 5 1 4 5 9 2 7 2 3 5 1 8 1 9]
n = input("Digite o número procurado: ")
count = 0
for i = 1:length(v)
if v(i)==n then
count = count +1
end
end
printf("%g ocorre %g vezes",n,count)
12
v = [9 9 8 8 8 7 5 5 5 4 4 3 3 3 3 3 2 2 2 2 1 1 1]
n = input("Digite o número procurado: ")
i = 1
while sv(i) > n
i = i +1
end
count = 0
while sv(i) == n
count = count + 1
i = i+1
end
printf("%g ocorre %g vezes",n,count)
13

Faça um programa que apresente ao usuário
um menu com as seguintes opções:
◦ inclui/altera nota de aluno
◦ lista notas de todos os alunos
◦ termina o programa

Conforme a opção selecionada, o programa
deve executar a ação correspondente e voltar
a apresentar o menu de opções
14
// lê a tabela de notas de um arquivo
// exibe menu de opções
// op = le opção
while op <> fim do
if op == inclui/altera then
// inclui/altera nota de aluno
elseif op == lista then
// exibe notas de todos os alunos
else
// opção inválida
end
// op = le opção
end
// grava a tabela de notas em arquivo
15
printf(“Sistema de Controle de Notas\n”)
printf(“-----------------------------\n”)
printf(“Opções: A – altera nota de aluno\n”)
printf(“
L – lista todas as notas\n”)
printf(“
F – termina o programa\n”)
msg = “Digite a opção desejada (A,C,L,P,F): “
16
// le a tabela de notas de um arquivo
// exibe menu de opções
op = input(msg,’s’);
while op <> ‘F’ | op <> ‘f’ do
if op == ‘A’ | op == ‘a’ then
// inclui/altera nota de aluno
elseif op == ‘L’ | op == ‘L’ then
// exibe notas de todos os alunos
else
// opção inválida
end
op = input(msg,’s')
end
// grava a tabela de notas em arquivo
17
le a matrícula e a nota do aluno;
 se a matrícula já ocorrer na tabela, a
nota é alterada
 se a matrícula não ocorrre na tabela, a
matrícula e a nota são incluídas

18
por matr
if (op == 'A' | op == 'a') then Procura
na primeira linha
// altera nota de aluno
da matriz notas.
matr = input("Matrícula: ") ll = linha em que
matr ocorre, ou
nota = input("Nota: ")
ll = [], se matr
ll = find(notas(:,1)==matr) não ocorre em
notas
if ll==[] then
notas = [notas; [matr nota]]
else
Inclui novo
notas(ll,2)= nota
aluno/nota na
matriz notas.
end
Modifica a nota
printf("\n")
do aluno
19

Na aula prática você vai incluir novas opções
no sistema de controle de notas:
◦ consulta nota de um aluno
 Lê matrícula e informa a nota do aluno
 exibe mensagem, caso o aluno não esteja cadastrado
◦ lista alunos aprovados
 sleciona os alunos com nota >= 6.0
 exibe lista de matrícula/nota desses alunos
20



Vamos usar comandos bastante simples para
ler e gravar as notas em um arquivo.
Se você quiser saber mais sobre E/S em
arquivos, consulte livros e manuais de Scilab.
Vamos supor que o arquivo notas será lido e
gravado em em um diretório cujo “path” está
armazenado na variável DIR.
21
Abre o arquivo
para leitura
diretório
DIR
// le o arquivo de notas no
DIR = "/Users/luciliacf/Desktop/"
[fd,err1] = mopen(DIR + "notas", "r")
err2 = meof(fd)
Testa se o arquivo está vazio
mclose(DIR+"notas")
Fecha o arquivo
if err1 <> 0 | err2 <> 0 then
notas = []
Se ocorreu erro na leitura do arquivo,
inicializa a matriz notas vazia
else
notas = fscanfMat(DIR+"notas")
end
Lê a matriz notas
do arquivo “notas”
22
Somente grava o
notasarquivo se a matriz de
notas não for vazia
// regrava arquivo de
if notas <> [] then
[x,k] = gsort(notas(:,1),'g','i')
Ordena a
matriz
notas = notas(k,:)
notas por
matrícula
fprintfMat(DIR + "notas",notas)
end
Grava a matriz notas do
arquivo “notas”
23
Download

7. Comandos de Repetição: while e for - Decom