1 / 23

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 www.decom.ufop.br/moodle. Aula 07 Comandos de Repetição while e for. Andréa Iabrudi andrea.iabrudi@iceb.ufop.br. e x – Série de Taylor.

marilu
Download Presentation

Aula 07 Comandos de Repetição while e for

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I – BCC701 www.decom.ufop.br/moodle Aula 07Comandos de Repetiçãowhilee for Andréa Iabrudi andrea.iabrudi@iceb.ufop.br

  2. ex – Série de Taylor • O valor de ex, onde x é um número real, podesercalculadopelaseguintesérie de Taylor: • Um valor aproximadoparaexpodeserobtido se utilizarmos um númerofinito de termos no somatórioacima.

  3. ex – no. de termosfixo • Escreva um programaqueleia o um número real x e calcule um valor aproximadoparaex, com um número de termosn, tambémfornecidocomoentradapara o programa. • Como deveserfeitoessecálculo? • Vocêusaria um forou um while?

  4. for versus while • Dados x e n, queremosécalcular • Como deveserfeitoessecálculo? • Vocêusaria um forou um while?

  5. ex – no. de termosfixo • 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

  6. Cálculo de ex – no. fixo de termos // 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; fori=2:n soma = soma + num/den num = num * x den = den * i end printf(”ex = %g”,soma)

  7. ex – no. de termosfixo • Note que a diferença entre osvalorescalculadosdimunui, àmedidaqueaumentamos o número de termos do sometório, e o valor calculadoaproxima-se do valor de ex

  8. for versus while • Escreva um programaqueleia o um número real x e calcule um valor paraex, com erro de aproximação inferior a um valor dado comoentrada. • Como deveserfeitoessecálculo? • Vocêusaria um forou um while?

  9. ex – aproximaçãodesejada 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

  10. Cálculo de ex – errodesejado // 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; whilesAnt – sn >= err soma = soma + num/den i = i+1 num = num * x den = den * i end printf(”ex = %g”,soma)

  11. Frequênciaem um vetor • Suponhaquequeremosescrever um programaparadeterminarquantasvezes um dado valor nocorreem um vetorv. • Considereosdoisseguintescasos: • O vetorvnãoestá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 vetorvestáordenado (emordemdescendente) v = [9 9 8 8 8 7 5 5 5 4 4 3 3 3 3 3 2 2 2 2 1 1 1] • Como vocêimplementaria o programaemcadacaso?

  12. Frequênciaemvetornãoordenado 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) ifv(i)==nthen count = count +1 end end printf("%g ocorre %g vezes",n,count)

  13. Frequênciaemvetorordenado 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 whilesv(i) > n i = i +1 end count = 0 whilesv(i) == n count= count + 1 i = i+1 end printf("%g ocorre %g vezes",n,count)

  14. Sistema de Notas de Alunos • Faça um programaqueapresenteaousuário um menu com as seguintesopções: • inclui/altera nota de aluno • listanotas de todososalunos • termina o programa • Conforme a opçãoselecionada, o programadeveexecutar a açãocorrespondente e voltar a apresentar o menu de opções

  15. Estrutura do programa // lêa tabela de notas de um arquivo // exibemenu de opções // op = le opção whileop <> fimdo ifop == inclui/alterathen // inclui/altera nota de aluno elseifop == listathen // exibenotas de todososalunos else // opçãoinválida end // op = le opção end // gravaa tabela de notasemarquivo

  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 – listatodas as notas\n”) printf(“ F – termina o programa\n”) msg = “Digite a opçãodesejada (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’); whileop <> ‘F’ | op <> ‘f’ do ifop == ‘A’ | op == ‘a’then // inclui/altera nota de aluno elseifop == ‘L’ | op == ‘L’then // exibenotas de todososalunos else // opçãoinválida end op = input(msg,’s') end // gravaa tabela de notasemarquivo

  18. Inclui/altera nota de aluno • le a matrícula e a nota do aluno; • se a matrículajáocorrernatabela, a nota éalterada • se a matrículanãoocorrrenatabela, a matrícula e a nota sãoincluí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áticavocêvaiincluirnovasopções no sistema de controle de notas: • consulta nota de um aluno • Lêmatrícula e informa a nota do aluno • exibemensagem, caso o alunonãoestejacadastrado • listaalunosaprovados • slecionaosalunos com nota >= 6.0 • exibelista de matrícula/nota dessesalunos

  21. Lendo e gravandoemarquivo • Vamosusarcomandosbastante simples paraler e gravar as notasem um arquivo. • Se vocêquiser saber maissobre E/S emarquivos, consultelivros e manuais de Scilab. • Vamossuporque o arquivonotasserá lido e gravadoemem um diretóriocujo “path” estáarmazenadonavariável DIR.

  22. Lendo o arquivonotas 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 arquivonotas Somente grava o arquivo se a matriz de notas não for vazia // regravaarquivo 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”

More Related