Programando o Computador com PascaL: um ambiente para Auto
Transcrição
Programando o Computador com PascaL: um ambiente para Auto-Aprendizagem. Resolução dos desafios propostos no Capítulo 8 Resolução do Desafio 8.1 Resolução do Desafio 8.2 Fórmulas usadas na planilha: Para encontrar os valores pares e ímpares foi utilizada a função MOD( valor,2), que fornece o resto inteiro da divisão de Valor por 2. Se o resto é zero o número é divisível por 2 ele é par, caso contrário, é impar. A função MOD da planilha corresponde ao operador MOD do PascaL. Fórmulas usadas na planilha: Resolução do Desafio 8.3 Formulas usadas: Resolução do Desafio 8.4 program Desafio94; { Desafio 8. 4 } var A : array [ 1..4] of integer; i : integer; begin A[1] := 3; A[2] := 9; A[3] := 8; A[4] := 5; for i := 1 to 4 do write(A[i],' '); writeln; end. Saída: Resolução do Desafio 8.5 program Desafio95; { Desafio 8. 5 } var A : array [ 1..4] of integer; i : integer; begin A[1] := 3; A[2] := 9; A[3] := 8; A[4] := 5; for i := 4 downto 2 do writeln( A[i] ); end. Resolução do Desafio 8.6 Neste desafio precisaremos escrever uma fórmula capaz de multiplicar o Salário por 1,10 e somar 260 ao resultado. Basta, portanto escrever a fórmula D2*1,1 + 260 na célula F2 e, em seguida, copiá-la e colá-la nas células F3 a F8: copiando e colando a célula F2 nas células F3 a F8: Aqui estão as fórmulas: Resolução do Desafio 8.7 : Basta usar a fórmula =SE(D2< 1000;D2*1,1+260;D2) em F2, copiá-la e colá-la de F3 a F8. Resolução do Desafio 8.8 Fazer as alterações destacadas em negrito no programa da Figura 9.23 do livro: program Desafio88; { Desafio 8.8 } {Este programa implementa e manipula um conjunto de seis valores fornecidos diretamente no programa. Encontra o Maior e o Menor valor desse conjunto,aponta os números pares e ímpares do conjunto e fornece os quadrados e os cubos de cada elemento do conjunto.} var conjDados pares impares quadrados cubos i soma maior menor Media Aux : : : : : : : : : : : array[1..6] of integer; array[1..6] of integer; array[1..6] of integer; array[1..6] of integer; array[1..6] of integer; integer; integer; integer; integer; real; integer; { auxiliar para leitura } Begin {Fornece os valores do conjunto} for i := 1 to 6 do begin write( 'Entre com o valor de '); writeln( 'Conjunto de Dados [', i, '] : '); readln( aux); ConjDados[i] := aux; end; {Mostra o conjDados} writeln; writeln('Valores do conjunto fornecido'); for i := 1 to 6 do begin write(conjDados[i], ' , '); end; writeln; writeln; Resolução do Desafio 8.9 program Desafio89; {Desafio 8.9} const N = 10; var VET : array[1..10] of integer; i : integer; begin for i := 1 to N do begin if i mod 3 = 0 { é múltiplo de 3? } then VET[i] := 1 else vet[i] := 0; end; for i := 1 to N do write( VET[i], ' '); writeln; end. Resolução do Desafio 8.10 A análise da planilha mostra que cada linha da coluna C contém o quadrado do valor contido na coluna B, da mesma linha. A coluna B, por sua vez, começa com 1 e cada linha subseqüente tem um valor que é o anterior acrescido de 1: Coluna B 1 2 3 : 17 coluna C 1 4 9 : 289 O programa Pascal poderia ser: program Desafio810; {Desafio 8.10} var B : array [1..17] of integer; i : integer; begin for i := 1 to 17 do begin B[i] := i * i; write(B[i]:3, ' '); end; writeln; end. Que irá produzir a saída: Resolução do Desafio 8.11 Precisamos analisar a planilha dada: Se observarmos a linha 3, veremos que temos uma seqüência de números em ordem crescente, a partir de 1 na célula B3. Imediatamente acima, na linha 2, temos uma seqüência decrescente, começando em 13 na célula B2 e terminando em 2 na célula M2. Se colocarmos as duas linhas em correspondência, é fácil ver que os valores da linha 2 podem ser calculados como uma função dos valores da linha 3: 1 13 2 12 3 11 4 10 : : : : 12 2 A função, que liga os valores da linha 2 com os valores da linha 1, seria, então: f(<linha2>) = 13 – <linha1> + 1 De fato: 13 = 13 – 1 + 1 12 = 13 – 2 + 1 11 = 13 – 3 + 1 : : 2 =13 – 12 + 1 A célula N2 contém a soma dos valores de B2 a M2 e a célula O2 contém o produto de B2 até M2. Daí o programa: program Desafio811; {Desafio 8.11} var Linha : array[1..12]of integer; i : integer; soma : integer; produto : integer; begin soma := 0; produto := 1; for i := 1 to 12 do begin Linha[i] := 13 - i + 1; write(Linha[i]:3, ' '); soma := soma + Linha[i]; produto:= produto * Linha[i]; end; writeln; writeln('Soma = ', soma); writeln('Produto = ', produto); end. A saída produzida: Resolução do Desafio 8.12 Usaremos a função embutida da planilha chamada ÍNDICE, com o formato ÍNDICE( Endereço de pesquisa, Numero da linha, Número da coluna). A função Índice retorna um valor ou a referência a um valor dentro de uma tabela ou intervalo. Na Célula B16 podemos colocar: =ÍNDICE($B$10:$H$10;1;B5) Ela indica que a área que vai de B10 a H10 será pesquisada como uma única linha e o valor que estiver na coluna indicada por B5 será retornada e colocada em B16. Basta copiar e colar a fórmula de B16 em C16 a G16. E com parte das fórmulas: Resolução do Desafio 8.13: Resolução do Desafio 8.14 a) Procedimento de troca e teste. program Desafio914; {Desafio 8.14} var A : char; B : char; procedure troca ( var x : char; var y : char); var temp : char; begin temp := x; x := y; y := temp; end; {troca} begin {teste do procedimento troca } A := '5'; B := '3'; writeln( A, ' ', B); troca(A, B); writeln( A, ' ', B); end. E o resultado do teste: Resolução do Desafio 8.15 program Desafio815; {Desafio 8.15} var N : integer; { valor fornecido} function Stirling( n : integer) : real; begin Stirling := sqrt( 2*PI*n) * power(n/exp(1), n)* ( 1 + 1/(12*n)); end; {Stirling} function Fatorial( n : integer) : integer; var f : integer; { auxiliar p/ calculo do fatorial} i : integer; { sequencia de 1 a n } begin f := 1; for i := n downto 1 do begin f := f * i; end; Fatorial := f; end; { Fatorial} begin write( 'Entre com o valor de N para o qual'); writeln('deseja o fatorial'); readln(N); writeln( 'O farorial de ' , N, ' é: ', Fatorial(N)); writeln; write( 'O fatorial calculado por '); writeln(' Stirling é: ', Stirling(N)); writeln; writeln( 'O percentual de acerto é: ', (100* Stirling(N))/Fatorial(N) , ' %' ); end. As fórmulas da primeira e segunda linhas quando n =1 e n=2 são: Podemos copiar a linha 9 para baixo, quantas linhas quisermos. b) Programa em PascaL: program Desafio815; {Desafio 8.15} var N : integer; { valor fornecido} function Stirling( n : integer) : real; begin Stirling := sqrt( 2*PI*n) * power(n/exp(1), n)* ( 1 + 1/(12*n)); end; {Stirling} function Fatorial( n : integer) : integer; var f : integer; { auxiliar p/ calculo do fatorial} i : integer; { sequencia de 1 a n } begin f := 1; for i := n downto 1 do begin f := f * i; end; Fatorial := f; end; { Fatorial} begin writeln( 'Entre com o valor de N para o qual deseja o fatorial'); readln(N); writeln( 'O farorial de N é: ', Fatorial(N)); writeln; writeln( 'O fatorial calculado por Stirling', ' é: ', Stirling(N)); writeln; writeln( 'O percentual de acerto é: ', (100* Stirling(N))/Fatorial(N) , ' %' ); end. Cuja execução para N = 6 fornece: Fim da resolução dos desafios do capítulo 8
Documentos relacionados
solução
write('Da 5 volores inteiros:');
while b<>5 do
(* ≠ nao e permittido *)
begin
read(e);
if (e mod 3) = 0 then
begin
c := c + 1 ;
if d
Estruturas de Repetição
x,maior:real; cont:integer; Begin {usando o comando For} For cont:= 1 to 10 do begin write('digite um valor '); ...
Leia mais[java] Sequencia de escape,[ras.] A experiência da ALMG com o uso
públicos sobre a mudança de software aplicativos proprietário para seu similares livre. Especificamente, da troca da ferramenta de produtividade para escritório Microsoft Office (versão 97) pelo Op...
Leia maisBegin
• Uma análise desses problemas indica que, ao desenvolvermos os seus programas associados, haverá a necessidade de repetição de um ou mais comandos (conjunto de instruções ou bloco de comandos) po...
Leia maisSolução – 1ª Lista de Exercícios
18. Faça um programa que receba um número positivo e maior que zero, calcule e mostre: a) O número digitado ao quadrado b) O número digitado ao cubo c) A raiz quadrada do número digitado d) A raiz ...
Leia maisTexto retirado e adaptado da apostila “A Linguagem Pascal
Vale lembrar que o que limita o tamanho de um arquivo é o espaço de gravação do meio físico dele. O programa de gerenciamento de registros de alunos deverá ao final executar as rotinas de: cadastra...
Leia mais