A maior rede de estudos do Brasil

Grátis
146 pág.
Programando com PASCAL - Jaime Evaristo

Pré-visualização | Página 34 de 50

sendo apenas uma delas verdadeira. Escreva um procedimento que receba a seqüência de respostas 
corretas, o gabarito, e corrija um cartão-resposta dado.
15. Escreva um programa que forneça o valor numérico de um polinômio P(x) dado, para um valor de x 
dado. Por exemplo, se o polinômio dado for P(x) = x3 + 2x - 1 e o valor de x dado for 2, o programa deve 
fornecer P(2) = 23 + 2x2 - 1 = 11.
16. A matemática prova que a conversão de um número do sistema decimal para o sistema binário pode 
ser feita através de divisões sucessivas do número e dos quocientes sucessivamente obtidos por 2, sendo 
então o número binário dado pela seqüência iniciada por 1 e seguida pelos restos obtidos nas divisões 
sucessivas, na ordem inversa em que são obtidos. Por exemplo, para se converter 22 do sistema decimal para 
o sistema binário, temos: 22 mod 2 = 0; 11 mod 2 = 1; 5 mod 2 = 1; 2 mod 2 = 0 e, portanto, 22 = (10110)2. 
Escreva uma função que converta um número positivo dado no sistema decimal de numeração para o sistema 
binário, usando o algoritmo acima. 
17. O exercício 10 da seção 4.6 solicitava um programa que determinasse a decomposição em fatores 
primos, fornecendo os fatores primitivos e suas respectivas multiplicidades. Na ocasião, os fatores primos e 
suas multiplicidades eram apenas exibidos não sendo armazenados. Modifique a função referida para que os 
fatores primos e as suas multiplicidades sejam armazenados antes de serem exibidos.
18. A Universidade Federal de Alagoas (UFAL) adota o sistema de verificação de aprendizagem listado 
no exemplo 8 da seção 3.5, com o adendo de que terá direito a uma reavaliação um aluno que obtiver uma 
nota inferior a 7,0 em algum bimestre. Neste caso, a nota obtida na reavaliação substitui a menor das notas 
bimestrais obtidas. Escreva um procedimento que, recebendo as notas das avaliações bimestrais e, se for o 
caso, a nota da reavaliação e, se for o caso, a nota da prova final, forneça a média final de um aluno da 
UFAL e a sua condição em relação à aprovação. 
19. Escreva um procedimento que forneça a transposta de uma matriz dada.
20. Um dos métodos para se estudarem as soluções de um sistema linear de n equações a n incógnitas 
aplica operações elementares sobre as linhas da matriz dos coeficientes, sendo a permuta de duas linhas uma 
destas operações elementares. Escreva um procedimento que permute as posições de duas linhas de uma 
matriz dadas.
21. Uma matriz quadrada é dita triangular se os elementos situados acima de sua diagonal principal são 
todos nulos. Escreva uma função que receba uma matriz quadrada e verifique se ela é triangular.
22. O exemplo 4 da seção 6.6 apresentou um procedimento para armazenar uma matriz simétrica. Este 
exercício quer algo contrário: escreva uma função que verifique se uma matriz dada é simétrica.
23. Escreva um procedimento que determine o produto de duas matrizes. 
24. Escreva um programa que determine o menor valor de cada uma das linhas de uma matriz dada, 
fornecendo o índice da coluna que contém este menor valor. Por exemplo, se a matriz dada for 
3 7 4 6
5 2 5 4
2 6 5 1





 , a função deve fornecer uma tabela do tipo
Linha Menor valor Coluna
1 3 1
2 2 2
3 1 4
Um programa como este poderia receber os preços de diversos produtos praticados por vários 
supermercados e forneceria, para cada produto, o menor preço e o supermercado que pratica este melhor 
preço.
25. No exemplo 4 da seção anterior, vimos como armazenar uma matriz simétrica. Na prática, uma 
matriz deste tipo ocorre, por exemplo, numa tabela de distâncias entre cidades, como a seguinte tabela que dá 
as distâncias aéreas, em Km, entre as capitais dos estados nordestinos (Aracaju, Fortaleza, João Pessoa, 
Maceió, Natal, Recife, Salvador, São Luís, Teresina).
A F JP M N R S SL T
A 0 812 438 210 550 398 267 1218 1272
F 812 0 562 730 444 640 1018 640 432
JP 418 562 0 284 144 110 758 1208 987
M 210 730 294 0 423 191 464 1220 1126
N 550 414 144 423 0 252 852 1064 843
R 398 640 118 191 252 0 654 1197 935
S 267 1018 758 464 852 654 0 1319 1000
SL 1218 640 1208 1220 1064 1197 1319 0 320
T 1272 432 987 1126 843 935 1000 320 0
Imagine que uma companhia de transporte aéreo estabeleça que uma viagem entre duas cidades que 
distem mais de 400 Km deve ter uma escala. Escreva um programa que armazene uma tabela das distâncias 
aéreas entre n cidades e dadas duas cidades determine, se for o caso, a cidade em que deve se realizar uma 
escala para que o percurso seja o menor possível. Por exemplo, nas condições estabelecidas, a viagem entre 
Maceió e São Luís deve ter uma escala em Fortaleza (o percurso Maceió/Fortaleza/São Luís é de 1370 Km; o 
percurso, por exemplo, Maceió/Recife/São Luís é de 1388 Km).
26. (Problema não-trivial) Utilizando uma função recursiva, construa um programa que escreva as 
combinações dos números 1, 2, ..., n, com taxa k, n e k dados. Por exemplo, se n = 5 e k = 3, o programa 
deve exibir
1, 2, 3
1, 2, 4
1, 2, 5
1, 3, 4
1, 3, 5
1, 4, 5
2, 3, 4
2, 3, 5
2, 4, 5
3, 4, 5.
Capítulo 7 Cadeia de Caracteres (Strings)
7.1 O que são cadeias de caracteres
Como foi dito na seção 5.6, Pascal possui um "tipo de dado", denominado string, capaz de armazenar 
uma cadeia de caracteres. Na verdade, uma string pode ser vista como um vetor cujas componentes são 
variáveis do tipo char, com a diferença que uma string pode ser acessada globalmente. Além disto, o 
sistema acrescenta uma componente de índice zero que armazena informações sobre o número de caracteres 
da string. Este número de caracteres é, naturalmente, chamado de comprimento da string. 
A declaração de um string deve ser feita através da seguinte sintaxe:
var Identificador : string[n];
onde n define o comprimento máximo de uma cadeia de caracteres que pode ser armazenada na variável. O 
sistema limita este número a 255 e quando se pretende que a string tenha este tamanho máximo o parâmetro 
n e os colchetes podem ser omitidos. Estes elementos também são omitidos numa definição de um tipo de 
dado de um parâmetro de um subprograma ou do tipo de uma função.
Como dissemos acima, além das componentes reservadas para o armazenamento dos caracteres, o 
sistema reserva uma outra componente, de índice 0 (zero), para guardar informações a respeito do 
comprimento corrente da string. Estas informações são armazenadas através do caractere cujo Código ASCII 
Decimal é o número atual de caracteres armazenados.
Por exemplo, uma declaração do tipo var St : string[8]; faz com que o sistema reserve 9 (nove) variáveis 
do tipo char, deixando a variável St apta a armazenar cadeias com até 8 (oito) caracteres. Armazenando-se, 
por exemplo, a cadeia Livro em St, teremos a seguinte disposição:
Chr(5) L i v r o
Neste exemplo, St[1] = L, St[4] = r, etc. e St[0] = Chr[5] e, portanto, o comprimento da cadeia 
armazenada pode ser obtido através de Ord(St[0]). Na verdade, o sistema oferece uma função predefinida 
Length(x) que fornece o comprimento da cadeia armazenada na variável x. Naturalmente, Length(x) = 
Ord(x[0]).
Tentativas de se armazenarem cadeias com um número maior de caracteres do que o número máximo 
definido para a variável não provocam erros de compilação nem de execução. Apenas os caracteres 
excedentes serão perdidos. Se tentássemos armazenar a palavra Matematica na variável St do exemplo 
anterior, os caracteres c e a seriam perdidos e a disposição seria a seguinte:
Chr(8) M a t e m a t i
Além da possibilidade de acesso a cada componente da string, através de índices, uma variável deste tipo 
pode ser acessada globalmente em comandos de entrada, de saída e de atribuição. Além disso, pode-se 
realizar comparações entre os conteúdos de variáveis