CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IV Fluxogramas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
description
Transcript of CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
![Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/1.jpg)
CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO
Aulas Práticas – 2013Aulas Práticas – 2013
Capítulo V Capítulo V
Comandos For e Switch-Comandos For e Switch-CaseCase
![Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/2.jpg)
Outro comando repetitivo: forOutro 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++) { scanf (“%d”, &num); soma += num; }
Ou outras formas
soma += num;
equivale a
soma = soma + num;
i++; equivale a
i = i + 1;
![Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/3.jpg)
Forma geral do comando for:Forma geral do comando for:
for ( Inicializações ; Expressão ; for ( Inicializações ; Expressão ; Atualizações ) Atualizações )
ComandoComando
Inicializações Inicializações e e Atualizações:Atualizações:
Listas de zero ou mais Listas de zero ou mais CmdAtribuição’sCmdAtribuição’s,, CmdEntrada’sCmdEntrada’s, , CmdSaída’sCmdSaída’s ou ou ChamadaFunção’s ChamadaFunção’s
Separados por Separados por vírgula vírgula e não por e não por ponto e ponto e vírgulavírgula
O O CmdFor CmdFor acima equivale aacima equivale a
Inicializaçõeswhile ( Expressão ) {
Comando
Atualizações}
![Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/4.jpg)
Fluxograma do comando for:Fluxograma do comando for:
for ( Inicializações ; Expressão ; for ( Inicializações ; Expressão ; Atualizações ) Comando Atualizações ) Comando
![Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/5.jpg)
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
void main () {void main () {
int n, i, div, soma;int n, i, div, soma;
printf ("Digite um numero inteiro positivo: "); scanf ("%d", printf ("Digite um numero inteiro positivo: "); scanf ("%d", &n);&n);
printf ("\nNumeros perfeitos entre 1 e %d:\n\n", n);printf ("\nNumeros perfeitos entre 1 e %d:\n\n", n);
i = 1;i = 1;
while (i <= n) {while (i <= n) {
soma = 0; div = 1;soma = 0; div = 1;
while (div*2 <= i) {while (div*2 <= i) {
if (i % div == 0) soma += div;if (i % div == 0) soma += div;
div++;div++;
}}
if (soma == i) printf ("%12d", i);if (soma == i) printf ("%12d", i);
i++;i++;
}}
printf ("\n\nDigite algo para encerrar: "); getch ();printf ("\n\nDigite algo para encerrar: "); getch ();
}}
Programa 5.1: Números perfeitos
Usar comando for ao invés de while
Salvar e executar
Número perfeito: a soma de seus divisores próprios é igual a si mesmo. Exemplos:
6 = 1 + 2 + 328 = 1 + 2 + 4 + 7 + 14
![Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/6.jpg)
Comando condicional de várias alternativas:Comando condicional de várias alternativas:
Expressão
Lista de comand
os
Lista de comand
os
Lista de comand
os
Lista de comand
os
V 11, V 12
, ... ,
V 1i
V 21, V
22, .
.. ,
V 2j
Vn1 , V
n2 , ... ,
Vnp
Outros
![Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/7.jpg)
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
void main ( ) {void main ( ) {
char c; int n;char c; int n;
printf ("Levantar o astral? (s/n): "); c = getche();printf ("Levantar o astral? (s/n): "); c = getche();
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {
printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", printf ("\n\n\tDigite um numero de 1 a 7: "); scanf ("%d", &n);&n);
switch (n) {switch (n) {
case 1: printf ("\n\tVoce eh inteligente"); break;case 1: printf ("\n\tVoce eh inteligente"); break;
case 2: printf ("\n\tVoce eh campeao"); break;case 2: printf ("\n\tVoce eh campeao"); break;
case 3: printf ("\n\tVoce estah com tudo"); break;case 3: printf ("\n\tVoce estah com tudo"); break;
case 4: printf ("\n\tSeu destino eh vencer"); break;case 4: printf ("\n\tSeu destino eh vencer"); break;
case 5: printf ("\n\tTudo coopera para seu sucesso"); case 5: printf ("\n\tTudo coopera para seu sucesso"); break;break;
case 6: printf ("\n\tA vida sorri para voce"); break;case 6: printf ("\n\tA vida sorri para voce"); break;
case 7: printf ("\n\tNada pode impedir sua vitoria"); case 7: printf ("\n\tNada pode impedir sua vitoria"); break;break;
default: printf ("\n\tO numero deve ser de 1 a 7");default: printf ("\n\tO numero deve ser de 1 a 7");
}}
printf ("\n\nLevantar o astral? (s/n): "); c = getche ();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
![Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/8.jpg)
Exercício 5.1: Resolução de 3 problemas Exercício 5.1: Resolução de 3 problemas matemáticosmatemáticos
Escrever um programa amigável em C para Escrever um programa amigável em C para resolver os três seguintes problemas matemáticos resolver os três seguintes problemas matemáticos escolhidos perante um menu de problemas:escolhidos perante um menu de problemas:
1.1.Cálculo da Cálculo da médiamédia aritmética aritmética ponderadaponderada de de vários números reaisvários números reais
2.2.Cálculo da soma dos termos de uma Cálculo da soma dos termos de uma progressão progressão aritméticaaritmética de números reais de números reais
3.3.Cálculo do Cálculo do fatorial fatorial de um número inteirode um número inteiro
A escolha do problema deve usar o comando A escolha do problema deve usar o comando switch-caseswitch-case
![Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/9.jpg)
Para cada problema a ser resolvido, o programa deve Para cada problema a ser resolvido, o programa deve pedir dados específicos para o operadorpedir dados específicos para o operador
Media ponderada: Media ponderada:
– Pedir o número de elementos Pedir o número de elementos n n a participarem da média a participarem da média ((n > 0n > 0) )
– Pedir cada elemento acompanhado de seu peso (os Pedir cada elemento acompanhado de seu peso (os elementos devem ser reais mas os pesos devem ser elementos devem ser reais mas os pesos devem ser inteiros positivos)inteiros positivos)
■ Soma da progressão aritmética:Soma da progressão aritmética:
■ Pedir o primeiro termo (tipo real), o número de termos Pedir o primeiro termo (tipo real), o número de termos (tipo inteiro) e a razão (tipo real)(tipo inteiro) e a razão (tipo real)
■ Não usar a fórmula da somaNão usar a fórmula da soma
■ Fatorial: Fatorial: Pedir o número do qual se deseja o fatorial Pedir o número do qual se deseja o fatorial (deve ser inteiro e (deve ser inteiro e 0 e < 13 0 e < 13))
A seguir, sugestão para saída de resultados
Usar o comando for sempre que puder
O programa deve insistir para o operador digitar os dados corretamente
![Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/10.jpg)
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
![Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/11.jpg)
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
![Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/12.jpg)
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
![Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/13.jpg)
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
void main () {void main () {
char c;char c;
int problema, nelem, npa, nfat, fat, - - - - - ;int problema, nelem, npa, nfat, fat, - - - - - ;
float mediapond, a1, razao, somapa - - - - - ;float mediapond, a1, razao, somapa - - - - - ;
- - - - -- - - - -
printf ("SOLUCAO DE PROBLEMAS MATEMATICOS");printf ("SOLUCAO DE PROBLEMAS MATEMATICOS");
printf ("\n\nResolver problema? (s/n): "); c = getche ();printf ("\n\nResolver problema? (s/n): "); c = getche ();
while (c == 's' || c == 'S') {while (c == 's' || c == 'S') {
printf ("\n\nEscolha o problema; Digite");printf ("\n\nEscolha o problema; Digite");
printf ("\n\n\t1 - para Media aritmetica ponderada");printf ("\n\n\t1 - para Media aritmetica ponderada");
printf ("\n\t2 - para Soma de PA");printf ("\n\t2 - para Soma de PA");
printf ("\n\t3 - para Fatorial");printf ("\n\t3 - para Fatorial");
printf ("\n\nSua opcao: "); scanf ("%d", &problema);printf ("\n\nSua opcao: "); scanf ("%d", &problema);
![Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/14.jpg)
switch (problema) {switch (problema) {
case 1:case 1:
printf ("\n\nMedia Aritmetica Ponderada");printf ("\n\nMedia Aritmetica Ponderada");
printf ("\n\n\tDigite o numero de elementos (>0): ");printf ("\n\n\tDigite o numero de elementos (>0): ");
scanf ("%d", &nelem);scanf ("%d", &nelem);
while (nelem <= 0) {while (nelem <= 0) {
- - - - -- - - - -
}}
- - - - - // digitacao dos elementos e seus pesos- - - - - // digitacao dos elementos e seus pesos
- - - - - // calculo da media ponderada (mediapond)- - - - - // calculo da media ponderada (mediapond)
printf ("\n\tMedia ponderada = %g", mediapond);printf ("\n\tMedia ponderada = %g", mediapond);
break;break;
case 2:case 2:
printf ("\n\nSoma de uma Progressao Aritmetica");printf ("\n\nSoma de uma Progressao Aritmetica");
printf ("\n\n\tDigite o primeiro termo, o numero de termos e a printf ("\n\n\tDigite o primeiro termo, o numero de termos e a razao: ");razao: ");
scanf ("%f%d%f", &a1, &npa, &razao);scanf ("%f%d%f", &a1, &npa, &razao);
- - - - - // calculo da soma da PA (somapa)- - - - - // calculo da soma da PA (somapa)
printf ("\n\tSoma PA = %g", somapa);printf ("\n\tSoma PA = %g", somapa);
break;break;
![Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/15.jpg)
case 3:case 3:
printf ("\n\nFatorial de um numero");printf ("\n\nFatorial de um numero");
printf ("\n\n\tDigite o numero (>=0): ");printf ("\n\n\tDigite o numero (>=0): ");
scanf ("%d", &nfat);scanf ("%d", &nfat);
while (nfat < 0 || nfat >= 13) {while (nfat < 0 || nfat >= 13) {
- - - - -- - - - -
}}
- - - - - // calculo do fatorial (fat)- - - - - // calculo do fatorial (fat)
printf ("\n\tFatorial(%d) = %d", nfat, fat); printf ("\n\tFatorial(%d) = %d", nfat, fat);
break;break;
default:default:
printf ("\n\nErro na opcao\nDigite novamente:");printf ("\n\nErro na opcao\nDigite novamente:");
}} // final do switch// final do switch
printf ("\n\nResolver problema? (s/n): "); c = getche ();printf ("\n\nResolver problema? (s/n): "); c = getche ();
}} // final do while// final do while
printf ("\n\nDigite algo para encerrar: "); getch ();printf ("\n\nDigite algo para encerrar: "); getch ();
}} // final do programa// final do programa
Substituir todos os comandos while por for
![Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/16.jpg)
Exercício do Lab 5: Resolução de vários Exercício do Lab 5: Resolução de vários problemas matemáticosproblemas matemáticos
Acrescentar ao programa anterior a opção de Acrescentar ao programa anterior a opção de resolver os seguintes problemas:resolver os seguintes problemas:
Cálculo de Cálculo de eexx por série de MacLaurinpor série de MacLaurin Cálculo de Cálculo de sin(x)sin(x), por série de MacLaurin (, por série de MacLaurin (xx
em graus)em graus) Cálculo de Cálculo de cos(x)cos(x), por série de MacLaurin (, por série de MacLaurin (xx
em graus)em graus) Cálculo de Cálculo de loglogbbxx, usando a função , usando a função loglog
(logaritmo neperiano) do (logaritmo neperiano) do math.hmath.h Cálculo de Cálculo de RaizQuadrada(x)RaizQuadrada(x) sem usar a sem usar a
função função sqrtsqrt do do math.hmath.h
![Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/17.jpg)
Série de MacLaurin para Série de MacLaurin para eexx::
■ Ou seja, Ou seja,
■ Cada novo termo deve ser acrescentado à Cada novo termo deve ser acrescentado à somatória enquanto ele não for igual a somatória enquanto ele não for igual a zerozero
■ Cada novo termo da somatória pode ser Cada novo termo da somatória pode ser calculado em função do termo anteriorcalculado em função do termo anterior
Usar o comando for para calcular a somatória
![Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/18.jpg)
Séries de MacLaurin para Séries de MacLaurin para sin(x) sin(x) e e cos(x)cos(x) com com x x em radianos:em radianos:
■ Ou seja, Ou seja,
■ Cada novo termo deve ser acrescentado à Cada novo termo deve ser acrescentado à somatória enquanto ele não for igual a somatória enquanto ele não for igual a zerozero
■ Cada novo termo da somatória pode ser Cada novo termo da somatória pode ser calculado em função do termo anteriorcalculado em função do termo anterior
Usar o comando for para calcular a somatória
O ângulo deve ser digitado em graus e convertido para radianos
![Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/19.jpg)
Cálculo de Cálculo de loglogbbxx::
■ Sabe-se que Sabe-se que loglogbbx = logx = logeex / logx / logeebb
■ O arquivo O arquivo math.h math.h tem a declaração da função tem a declaração da função log(y)log(y) que calcula que calcula loglogeeyy
■ É só usar essa funçãoÉ só usar essa função
![Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/20.jpg)
Cálculo da raiz quadrada de Cálculo da raiz quadrada de xx sem usar a função sem usar a função sqrtsqrt::
Estipula-se uma precisão (por exemplo, Estipula-se uma precisão (por exemplo, 0.0000010.000001))
Dá-se um chute inicial para a raiz (por exemplo, Dá-se um chute inicial para a raiz (por exemplo, 11))
Enquanto o chute estiver fora da precisão (por Enquanto o chute estiver fora da precisão (por exemplo, exemplo, |chute|chute22 - x| > 0.000001 - x| > 0.000001) calcular um ) calcular um novo chute usando a seguinte fórmula:novo chute usando a seguinte fórmula:
NovoChute = (ChuteAnterior + NovoChute = (ChuteAnterior + x/ChuteAnterior) / 2x/ChuteAnterior) / 2
■ Ver exemplo a seguirVer exemplo a seguir
![Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013](https://reader036.fdocumentos.tips/reader036/viewer/2022062518/56814503550346895db1cd8b/html5/thumbnails/21.jpg)
x = 72x = 72
sqrt = 1.00000000; sqrt = 1.00000000; |sqrt^2 - x| = 71.00000000|sqrt^2 - x| = 71.00000000
sqrt = 1.00000000 + 72 / 1.00000000 = 36.50000000; sqrt = 1.00000000 + 72 / 1.00000000 = 36.50000000;
|sqrt^2 - x| = 1260.25000000|sqrt^2 - x| = 1260.25000000
sqrt = 36.50000000 + 72 / 36.50000000 = 19.23630137; sqrt = 36.50000000 + 72 / 36.50000000 = 19.23630137;
|sqrt^2 - x| = 298.03529039|sqrt^2 - x| = 298.03529039
sqrt = 19.23630137 + 72 / 19.23630137 = 11.48961232; sqrt = 19.23630137 + 72 / 19.23630137 = 11.48961232;
|sqrt^2 - x| = 60.01119125|sqrt^2 - x| = 60.01119125
sqrt = 11.48961232 + 72 / 11.48961232 = 8.87807115; sqrt = 11.48961232 + 72 / 11.48961232 = 8.87807115;
|sqrt^2 - x| = 6.82014729|sqrt^2 - x| = 6.82014729
sqrt = 8.87807115 + 72 / 8.87807115 = 8.49397041; sqrt = 8.87807115 + 72 / 8.87807115 = 8.49397041;
|sqrt^2 - x| = 0.14753337|sqrt^2 - x| = 0.14753337
sqrt = 8.49397041 + 72 / 8.49397041 = 8.48528582; sqrt = 8.49397041 + 72 / 8.49397041 = 8.48528582;
|sqrt^2 - x| = 0.00007542|sqrt^2 - x| = 0.00007542
sqrt = 8.48528582 + 72 / 8.48528582 = 8.48528137; sqrt = 8.48528582 + 72 / 8.48528582 = 8.48528137;
|sqrt^2 - x| = 0.00000000|sqrt^2 - x| = 0.00000000
Raiz Quadrada (72) = 8.48528137Raiz Quadrada (72) = 8.48528137Usar o comando for para as repetições