1 / 21

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013. Capítulo V Comandos For e Switch-Case. Sejam os seguintes comandos: int n, i, num, soma; scanf (“%d”, &n); soma = 0; i = 1; while (i <= n) { scanf (“%d”, &num); soma += num; i++; }.

viveca
Télécharger la présentation

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013

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. CES-10 INTRODUÇÃO À COMPUTAÇÃOAulas Práticas – 2013 Capítulo V Comandos For e Switch-Case

  2. Sejam os seguintes comandos: int n, i, num, soma; scanf (“%d”, &n); soma = 0; i = 1; while (i <= n) { scanf (“%d”, &num); soma += num; i++; } Eles podem ser escritos usando-se o comando for: scanf (“%d”, &n); soma = 0; for (i = 1; i <= n; i++) { scanf (“%d”, &num); soma += num; } ou: scanf (“%d”, &n); for (soma = 0, i = 1; i <= n; i++) { scanf (“%d”, &num); soma += num; } soma += num; equivale a soma = soma + num; i++; equivale a i = i + 1; Outro comando repetitivo: for Ou outras formas

  3. Forma geral do comando for: for ( Inicializações ; Expressão ; Atualizações ) Comando • Inicializações e Atualizações: • Listas de zero ou mais CmdAtribuição’s,CmdEntrada’s, CmdSaída’s ou ChamadaFunção’s • Separados por vírgula e não por ponto e vírgula • O CmdForacima equivale a Inicializações while ( Expressão ) { Comando Atualizações }

  4. Fluxograma do comando for: • for ( Inicializações ; Expressão ; Atualizações ) Comando

  5. Programa 5.1: Números perfeitos #include <stdio.h> #include <conio.h> void main () { int n, i, div, soma; printf ("Digite um numero inteiro positivo: "); scanf ("%d", &n); printf ("\nNumeros perfeitos entre 1 e %d:\n\n", n); i = 1; while (i <= n) { soma = 0; div = 1; while (div*2 <= i) { if (i % div == 0) soma += div; div++; } if (soma == i) printf ("%12d", i); i++; } printf ("\n\nDigite algo para encerrar: "); getch (); } Número perfeito: a soma de seus divisores próprios é igual a si mesmo. Exemplos: 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 Usar comando for ao invés de while Salvar e executar

  6. Comando condicional de várias alternativas: Expressão Outros V11, V12, ... , V1i V21, V22, ... , V2j Vn1, Vn2, ... , Vnp Lista de comandos Lista de comandos Lista de comandos Lista de comandos

  7. Programa 5.2: Levantar o astral Salvar e executar #include <stdio.h> #include <conio.h> void main ( ) { char c; int n; printf ("Levantar o astral? (s/n): "); c = getche(); while (c == 's' || c == 'S') { printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n); switch (n) { case 1: printf ("\n\tVoceeh inteligente"); break; case 2: printf ("\n\tVoceehcampeao"); break; case 3: printf ("\n\tVoceestah com tudo"); break; case 4: printf ("\n\tSeu destino eh vencer"); break; case 5: printf ("\n\tTudo coopera para seu sucesso"); break; case 6: printf ("\n\tA vida sorri para voce"); break; case 7: printf ("\n\tNada pode impedir sua vitoria"); break; default: printf ("\n\tO numero deve ser de 1 a 7"); } printf ("\n\nLevantar o astral? (s/n): "); c = getche (); } } Eliminar alguns ou todos os break’s e executar Trocar o esquema while por for

  8. Exercício 5.1: Resolução de 3 problemas matemáticos Escrever um programa amigável em C para resolver os três seguintes problemas matemáticos escolhidos perante um menu de problemas: • Cálculo da média aritmética ponderada de vários números reais • Cálculo da soma dos termos de uma progressão aritmética de números reais • Cálculo do fatorial de um número inteiro A escolha do problema deve usar o comando switch-case

  9. Usar o comando for sempre que puder O programa deve insistir para o operador digitar os dados corretamente Para cada problema a ser resolvido, o programa deve pedir dados específicos para o operador • Media ponderada: • Pedir o número de elementos n a participarem da média (n > 0) • Pedir cada elemento acompanhado de seu peso (os elementos devem ser reais mas os pesos devem ser inteiros positivos) • Soma da progressão aritmética: • Pedir o primeiro termo (tipo real), o número de termos (tipo inteiro) e a razão (tipo real) • Não usar a fórmula da soma • Fatorial: Pedir o número do qual se deseja o fatorial (deve ser inteiro e  0 e < 13) A seguir, sugestão para saída de resultados

  10. SOLUCAO DE PROBLEMAS MATEMATICOS Resolver problema? (s/n): s Escolha o problema; Digite 1 - para Media aritmetica ponderada 2 - para Soma de PA 3 - para Fatorial Sua opcao: 1 Media Aritmetica Ponderada Digite o numero de elementos (>0): 0 Numero nao positivo! Digite novamente: 3 Digite o 1o. elemento e seu peso: 3.4 4 Digite o 2o. elemento e seu peso: 5.2 4 Digite o 3o. elemento e seu peso: 9.1 2 Media ponderada = 5.26 Em amarelo a digitação do operador

  11. Resolver problema? (s/n): s Escolha o problema; Digite 1 - para Media aritmetica ponderada 2 - para Soma de PA 3 - para Fatorial Sua opcao: 2 Soma de uma Progressao Aritmetica Digite o primeiro termo, o numero de termos e a razao: 3.5 5 2.3 Soma PA = 40.5

  12. Resolver problema? (s/n): s Escolha o problema; Digite 1 - para Media aritmetica ponderada 2 - para Soma de PA 3 - para Fatorial Sua opcao: 3 Fatorial de um numero Digite o numero (>=0): -1 Numero negativo! Digite novamente: 7 Fatorial(7) = 5040 Resolver problema? (s/n): n Digite algo para encerrar: Completar o programa a seguir

  13. #include <stdio.h> #include <conio.h> void main () { char c; int problema, nelem, npa, nfat, fat, - - - - - ; float mediapond, a1, razao, somapa - - - - - ; - - - - - printf ("SOLUCAO DE PROBLEMAS MATEMATICOS"); printf ("\n\nResolver problema? (s/n): "); c = getche (); while (c == 's' || c == 'S') { printf ("\n\nEscolha o problema; Digite"); printf ("\n\n\t1 - para Media aritmetica ponderada"); printf ("\n\t2 - para Soma de PA"); printf ("\n\t3 - para Fatorial"); printf ("\n\nSua opcao: "); scanf ("%d", &problema);

  14. switch (problema) { case 1: printf ("\n\nMediaAritmetica Ponderada"); printf ("\n\n\tDigite o numero de elementos (>0): "); scanf ("%d", &nelem); while (nelem <= 0) { - - - - - } - - - - - // digitacao dos elementos e seus pesos - - - - - // calculo da media ponderada (mediapond) printf ("\n\tMedia ponderada = %g", mediapond); break; case 2: printf ("\n\nSoma de uma ProgressaoAritmetica"); printf ("\n\n\tDigite o primeiro termo, o numero de termos e a razao: "); scanf ("%f%d%f", &a1, &npa, &razao); - - - - - // calculo da soma da PA (somapa) printf ("\n\tSoma PA = %g", somapa); break;

  15. case 3: printf ("\n\nFatorial de um numero"); printf ("\n\n\tDigite o numero (>=0): "); scanf ("%d", &nfat); while (nfat < 0 ||nfat >= 13) { - - - - - } - - - - - // calculo do fatorial (fat) printf ("\n\tFatorial(%d) = %d", nfat, fat); break; default: printf ("\n\nErro na opcao\nDigite novamente:"); } // final do switch printf ("\n\nResolver problema? (s/n): "); c = getche (); } // final do while printf ("\n\nDigite algo para encerrar: "); getch (); } // final do programa Substituir todos os comandos while por for

  16. Exercício do Lab 5: Resolução de vários problemas matemáticos Acrescentar ao programa anterior a opção de resolver os seguintes problemas: • Cálculo de expor série de MacLaurin • Cálculo de sin(x), por série de MacLaurin (x em graus) • Cálculo de cos(x), por série de MacLaurin (x em graus) • Cálculo de logbx, usando a função log (logaritmo neperiano) do math.h • Cálculo de RaizQuadrada(x) sem usar a função sqrt do math.h

  17. Usar o comando for para calcular a somatória • Série de MacLaurin para ex: • Ou seja, • Cada novo termo deve ser acrescentado à somatória enquanto ele não for igual a zero • Cada novo termo da somatória pode ser calculado em função do termo anterior

  18. Séries de MacLaurin para sin(x) e cos(x) com x em radianos: • Ou seja, • Cada novo termo deve ser acrescentado à somatória enquanto ele não for igual a zero • Cada novo termo da somatória pode ser calculado em função do termo anterior O ângulo deve ser digitado em graus e convertido para radianos Usar o comando for para calcular a somatória

  19. Cálculo de logbx: • Sabe-se que logbx = logex / logeb • O arquivo math.h tem a declaração da função log(y) que calcula logey • É só usar essa função

  20. Cálculo da raiz quadrada de x sem usar a função sqrt: • Estipula-se uma precisão (por exemplo, 0.000001) • Dá-se um chute inicial para a raiz (por exemplo, 1) • Enquanto o chute estiver fora da precisão (por exemplo, |chute2 - x| > 0.000001) calcular um novo chute usando a seguinte fórmula: NovoChute = (ChuteAnterior + x/ChuteAnterior) / 2 • Ver exemplo a seguir

  21. x = 72 sqrt = 1.00000000; |sqrt^2 - x| = 71.00000000 sqrt = 1.00000000 + 72 / 1.00000000 = 36.50000000; |sqrt^2 - x| = 1260.25000000 sqrt = 36.50000000 + 72 / 36.50000000 = 19.23630137; |sqrt^2 - x| = 298.03529039 sqrt = 19.23630137 + 72 / 19.23630137 = 11.48961232; |sqrt^2 - x| = 60.01119125 sqrt = 11.48961232 + 72 / 11.48961232 = 8.87807115; |sqrt^2 - x| = 6.82014729 sqrt = 8.87807115 + 72 / 8.87807115 = 8.49397041; |sqrt^2 - x| = 0.14753337 sqrt = 8.49397041 + 72 / 8.49397041 = 8.48528582; |sqrt^2 - x| = 0.00007542 sqrt = 8.48528582 + 72 / 8.48528582 = 8.48528137; |sqrt^2 - x| = 0.00000000 Raiz Quadrada (72) = 8.48528137 Usar o comando for para as repetições

More Related