Programando o Computador com PascaL: um ambiente para Auto

Transcrição

Programando o Computador com PascaL: um ambiente para Auto
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

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 Leia mais

Estruturas de Repetição

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

[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 mais

Begin

Begin • 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 mais

Solução – 1ª Lista de Exercícios

Soluçã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 mais

Texto retirado e adaptado da apostila “A Linguagem Pascal

Texto 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