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.
 
                           s
  e 
                           s


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