A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 07 Comandos de Repetição while e for

Apresentações semelhantes


Apresentação em tema: "Aula 07 Comandos de Repetição while e for"— Transcrição da apresentação:

1 Aula 07 Comandos de Repetição while e for
Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 Aula 07 Comandos de Repetição while e for Andréa Iabrudi

2 ex – Série de Taylor O valor de ex, onde x é um número real, pode ser calculado pela seguinte série de Taylor: Um valor aproximado para ex pode ser obtido se utilizarmos um número finito de termos no somatório acima.

3 ex – no. de termos fixo 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?

4 for versus while Dados x e n, queremos é calcular
Como deve ser feito esse cálculo? Você usaria um for ou um while?

5 ex – no. de termos fixo Exemplos de execução: Qual é o valor de x? .5
Qual o número de termos? 1 ex = 1. Qual o número de termos? 2 ex = 1.5 Qual o número de termos? 3 ex = 1.625

6 Cálculo de ex – no. fixo de termos
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)

7 ex – no. de termos fixo n e0.5 sn – sn-1 2 1.5 3 1.625 0.125 4 1.64583
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 1.5 3 1.625 0.125 4

8 for versus while 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?

9 ex – aproximação desejada
Exemplo de execução: Qual é o valor de x? .5 Qual erro de aproximação? 0.01 ex = no. de termos = 5 Qual erro de aproximação? ex = no. de termos = 10

10 Cálculo de ex – erro desejado
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)

11 Frequência em um vetor Suponha que queremos escrever um programa para determinar quantas vezes um dado valor n ocorre em um vetor v. Considere os dois seguintes casos: O vetor v não está ordenado v = [ ] O vetor v está ordenado (em ordem descendente) v = [ ] Como você implementaria o programa em cada caso?

12 Frequência em vetor não ordenado
n = input("Digite o número procurado: ") count = 0 for i = 1:length(v) if v(i)==n then count = count +1 end printf("%g ocorre %g vezes",n,count)

13 Frequência em vetor ordenado
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 printf("%g ocorre %g vezes",n,count)

14 Sistema de Notas de Alunos
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

15 Estrutura do programa // 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 // grava a tabela de notas em arquivo

16 Exibindo o menu de opções
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): “

17 Refinando o programa // 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') // grava a tabela de notas em arquivo

18 Inclui/altera nota de aluno
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

19 Inclui/altera nota de aluno
Procura por matr na primeira linha da matriz notas. ll = linha em que matr ocorre, ou ll = [], se matr não ocorre em notas if (op == 'A' | op == 'a') then // altera nota de aluno matr = input("Matrícula: ") nota = input("Nota: ") ll = find(notas(:,1)==matr) if ll==[] then notas = [notas; [matr nota]] else notas(ll,2)= nota end printf("\n") Inclui novo aluno/nota na matriz notas. Modifica a nota do aluno

20 Modificando o programa
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

21 Lendo e gravando em arquivo
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.

22 Lendo o arquivo notas Abre o arquivo para leitura // le o arquivo de notas no diretório DIR DIR = "/Users/luciliacf/Desktop/" [fd,err1] = mopen(DIR + "notas", "r") err2 = meof(fd) mclose(DIR+"notas") if err1 <> 0 | err2 <> 0 then notas = [] else notas = fscanfMat(DIR+"notas") end Testa se o arquivo está vazio Fecha o arquivo Se ocorreu erro na leitura do arquivo, inicializa a matriz notas vazia Lê a matriz notas do arquivo “notas”

23 Gravando o arquivo notas
Somente grava o arquivo se a matriz de notas não for vazia // regrava arquivo de notas if notas <> [] then [x,k] = gsort(notas(:,1),'g','i') notas = notas(k,:) fprintfMat(DIR + "notas",notas) end Ordena a matriz notas por matrícula Grava a matriz notas do arquivo “notas”


Carregar ppt "Aula 07 Comandos de Repetição while e for"

Apresentações semelhantes


Anúncios Google