Aula prática 10
Esta aula consta de duas partes. A primeira está destinada ao alunos(as)
que fazem esta disciplina pela primeira vez. A segunda parte está destinada
aos repetentes que já fizeram os exercicios da primeira parte anteriormente.
Contudo, os alunos(as) novos que desejem, podem fazer os exercicios da segunda
parte em substituição da primeira.
Recomendação geral:
Fazer sempre o
algoritmo de cada exercício com lápis, papel, bonecos e desenhos.
Só quando tiver claro o que vai fazer, é que escreve as instrucções
em Pascal.
Parte A
1. Escreva um programa que pede ao
utilizador 10 números. O programa deve ordenar os números e
mostrar a lista ordenada.
2.
o Defina um array (capaz de conter 100 elementos) de records
com os seguintes campos:
a) numero de tipo inteior e b)
div3 de tipo boleano.
o Preencher este array com números aleatórios
entre 14 e 114 e guardar no campo numero .
o Determine um a um todos registos cujos valores no campo numero
são divisíveis por 3. Caso isto seja
verdadeiro, armazenar esta resposta no campo div3
do registo correspondente.
o No fim revise o array todo e calcule quantos valores são
divisíveis por 3.
Utilizar funções e procedimentos onde quer que
seja possível. Defina novos tipos de variáveis!
3. Escreva um programa que guarda
informações sobre os seus amigos. As informações
são nome e número telefónico. Utilice um
procedimento para inicializar o array com os dados (que não vêem
do utilizador).
Posteriormente, o programa deve ser capaz de: pedido um nome ao utilizador
e responder devolvendo o respectivo número telefónico. Exemplo
do programa a funcionar:
Diga um nome: cheila
O numero de telefone da cheila é
289.693459
4. Declare
1 uma variável do tipo word w
2 uma variável do tipo integer i
3 um apontador ao um word wp
4 um apontador ao um integer ip
Atribuir os valores -1 ao i
e 1 ao w
Agora faça uma atribuição do endereço de w
ao wp e o endereço de i ao ip.
Mostra o conteúdo dos endereços wp e ip.
Seguidamente faça o contrário: atribuir o endereço
de i ao wp e o endereço do w
ao ip.
Mostrar o conteúdo dos endereços em wp e ip
e aquele das variáveis apontadas pelos mesmos endereços.
5. Determine quanto tempo leva executar
os programas TestSpeed da aula teórica
20.
B.Destinada aos alunos(as) repitentes.
6. Escreva um programa que faz
o desenho dum triângulo de Pascal com oito (8) linhas. Como se sabe,
este triângulo tem muitas propriedades interessantes para as matemáticas
e as estatísticas. Nele encontramos números primos, números
triangulares, a serie de Fibonacci, combinatória, etc.
Na imagem seguinte pode-se ver o exemplo do triângulo de Pascal que
queremos construir:
|
|
|
|
|
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
1
|
|
|
|
|
|
|
|
|
|
|
|
1
|
|
2
|
|
1
|
|
|
|
|
|
|
|
|
|
1
|
|
3
|
|
3
|
|
1
|
|
|
|
|
|
|
|
1
|
|
4
|
|
6
|
|
4
|
|
1
|
|
|
|
|
|
1
|
|
5
|
|
10
|
|
10
|
|
5
|
|
1
|
|
|
|
1
|
|
6
|
|
15
|
|
20
|
|
15
|
|
6
|
|
1
|
|
1
|
|
7
|
|
21
|
|
35
|
|
35
|
|
21
|
|
7
|
|
1
|
O triângulo de Pascal é construído com um algoritmos
simples. Será o mesmo utilizado por você para fazer na linguagem
do mesmo nome do matemático francês:
1. A primeira linha tem um ‘1’ no centro. (o centro da
maior linha, ou seja a última.)
2. Nas restantes linhas o valor de cada célula
(ou coluna) corresponde a soma dos valores nas
diagonais da linha precedente . Por exemplo, a
linha 3 tem ‘1’ na coluna 6 e ‘2’ na coluna 8. Por
tanto na coluna 7 da linha 4 corresponde a soma
de 1 + 2 = 3.
Isto é: linha[n+1, x] = linha[n, x-1] + linha[n,
x+1].
3. Para calcular a soma das colunas na diagonal da linha precedente,
imagine sempre que as posições
em branco correspondem ao valor zero. De facto você
pode trabalhar com uma matriz assim(zeros
ou valores), e só no momento de imprimir
pode converter os zeros em espaços em branco.
4. O número de colunas em cada linha está relacionado
com o número de linhas que desejamos
preencher. Você vai descobrir facilmente. Uma
vez calculado isso, você sabe onde é que será inserido
o primeiro ‘1’ da primeira linha.
5. O primeiro valor inserido em cada linha é sempre ‘1’ e é
inserido na coluna anterior (na esquerda)
respecto a posição onde começou a linha
precedente, excepto a primeira linha claro. ( 0 + 1 = 1). Por
isto, é fundamental saber sempre onde foi inserido
o primeiro valor da linha anterior.
Mais dicas:
Criar uma função que recebe como argumentos una linha e uma
coluna, e devolve a soma das diagonais da linha precedente. Pode ser muito
útil.
Pode trabalhar só com duas linhas: actual e precedente e imprimir
linha a linha. Porque depois de tudo, o único necessário saber
para preencheer e imprimir uma linha são os valores que tive a linha
precedente.
Alternativamente pode utilizar a matriz completa tal como no gráfico
e imprimir no fim, após preenchida a matriz toda. Em quaisquer
caso, não esqueça de inicializar os arrays utilizados.
Para saber mais sobre o triângulo de Pascal ver por exemplo em:
http://mathforum.org/dr.math/faq/faq.pascal.triangle.html
7.
Escreva um programa que guarda a informação sobre 10 elementos
a sua escolha da tabela periódica de elementos e que permita
a sua consulta. (actualmente esta tabela tem 103 elementos como sabe.)
Para informação e obtenção de dados para o seu
exemplo, ver os sites:
http://www.cdcc.sc.usp.br/quimica/tabelaperiodica/tabelaperiodica1.htm
ou também:
http://www.brasil.terravista.pt/Albufeira/1895/
Para fazer, crie um array de registos (“record”) em Pascal onde vai
armazenar toda a informação interessante para cada elemento:
Número, Nome, Símbolo, camadas, massa, ponto ebulição,
ponto de fusão, nome do(s) descobridor(es), etc. Escolha pelo
menos cinco informações distintas sobre cada elemento.
Lembre-se que cada tipo de dado distinto merece também um tipo
distinto em Pascal.
Uma vez carregada a tabela, faz uma função que quando é
dado o número do elemento, a função devolve a
posição (indice) na matriz onde está situado o elemento.
Isto pela sua vez permite a um outro procedimento mostrar os dados armazenados
no correspondente registo.
soluções