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

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

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

Apresentações semelhantes


Apresentação em tema: "CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013"— Transcrição da apresentação:

1 CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Capítulo V Comandos For e Switch-Case

2 Outro comando repetitivo: for
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++) { soma += num; equivale a soma = soma + num; i++; equivale a i = i + 1; 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 CmdFor acima 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 (); Programa 5.1: Números perfeitos Número perfeito: a soma de seus divisores próprios é igual a si mesmo. Exemplos: 6 = 28 = Usar comando for ao invés de while Salvar e executar

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

7 Programa 5.2: Levantar o astral
#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\tVoce eh inteligente"); break; case 2: printf ("\n\tVoce eh campeao"); break; case 3: printf ("\n\tVoce estah 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 (); Programa 5.2: Levantar o astral Salvar e executar 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 Soma da progressão aritmética:
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) Usar o comando for sempre que puder O programa deve insistir para o operador digitar os dados corretamente A seguir, sugestão para saída de resultados

10 Em amarelo a digitação do operador
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: Soma PA = 40.5

12 Completar o programa a seguir
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\nMedia Aritmetica 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 Progressao Aritmetica"); 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);

15 Substituir todos os comandos while por for
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 ex por 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 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 Usar o comando for para calcular a somatória

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, ) Dá-se um chute inicial para a raiz (por exemplo, 1) Enquanto o chute estiver fora da precisão (por exemplo, |chute2 - x| > ) calcular um novo chute usando a seguinte fórmula: NovoChute = (ChuteAnterior + x/ChuteAnterior) / 2 Ver exemplo a seguir

21 x = 72 sqrt = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = sqrt = / = ; |sqrt^2 - x| = Raiz Quadrada (72) = Usar o comando for para as repetições


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

Apresentações semelhantes


Anúncios Google